Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีดึงปีปัจจุบันใน Android ด้วย Year API

บทนำ: java.time.Year

Year คลาสใน Java 8 Time API (API 26+) แสดงปีเพียงอย่างเดียว เหมาะสำหรับงานที่เกี่ยวข้องกับปี ไม่ต้องใช้ Calendar เก่าๆ

ตัวอย่าง: แสดงปีปัจจุบัน

ขั้นตอนที่ 1-2: โปรเจกต์และ Layout

TextView ใน ConstraintLayout จัดกึ่งกลาง

ขั้นตอนที่ 3: MainActivity.java

package com.example.myapplication;

import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.time.Year;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.dateTextView);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            Year year = Year.now();
            textView.setText("Current Year: " + year);
            
            // เพิ่มข้อมูลเพิ่มเติม
            textView.append("\nDays in Year: " + year.length()); // 365 หรือ 366
            textView.append("\nIs Leap Year: " + year.isLeap());
            
            // ปีก่อนหน้าและถัดไป
            textView.append("\nPrevious Year: " + year.minusYears(1));
            textView.append("\nNext Year: " + year.plusYears(1));
        } else {
            textView.setText("ต้องการ Android 8.0 (API 26) ขึ้นไป");
        }
    }
}

Year API เมธอดสำคัญ

เมธอดคำอธิบายตัวอย่าง
now()ปีปัจจุบันจาก System Clock2024
of(int year)สร้าง Year จากค่าปีYear.of(2024)
getValue()ค่าปีเป็น int2024
isLeap()เป็นปีอธิกสุรทินหรือไม่true/false
length()จำนวนวันในปี365 หรือ 366
plusYears(n)บวก n ปี (Immutable)2025
minusYears(n)ลบ n ปี (Immutable)2023
atDay(int dayOfYear)แปลงเป็น LocalDateLocalDate
atMonth(Month month)แปลงเป็น YearMonthYearMonth

Year vs LocalDate vs Calendar

คลาสAPI LevelThread-Safeเหมาะสำหรับ
Year26+ใช่งานเกี่ยวกับปีอย่างเดียว
LocalDate26+ใช่งานวันที่ทั่วไป
Calendar1+ไม่ (Mutable)Legacy code เท่านั้น

การใช้งานกับปีเฉพาะ

// ตรวจสอบปี 2000
Year year2000 = Year.of(2000);
boolean isLeap = year2000.isLeap(); // true (หาร 400 ลงตัว)

// สร้าง LocalDate วันที่ 1 มกราคม ปี 2024
LocalDate newYear = Year.of(2024).atDay(1); // 2024-01-01

build.gradle สำหรับ API < 26

android {
    coreLibraryDesugaringEnabled true
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
dependencies {
    coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.2.2"
}

ผลลัพธ์

Current Year: 2024
Days in Year: 366
Is Leap Year: true
Previous Year: 2023
Next Year: 2025