บทนำ: 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 Clock | 2024 |
of(int year) | สร้าง Year จากค่าปี | Year.of(2024) |
getValue() | ค่าปีเป็น int | 2024 |
isLeap() | เป็นปีอธิกสุรทินหรือไม่ | true/false |
length() | จำนวนวันในปี | 365 หรือ 366 |
plusYears(n) | บวก n ปี (Immutable) | 2025 |
minusYears(n) | ลบ n ปี (Immutable) | 2023 |
atDay(int dayOfYear) | แปลงเป็น LocalDate | LocalDate |
atMonth(Month month) | แปลงเป็น YearMonth | YearMonth |
Year vs LocalDate vs Calendar
| คลาส | API Level | Thread-Safe | เหมาะสำหรับ |
|---|---|---|---|
| Year | 26+ | ใช่ | งานเกี่ยวกับปีอย่างเดียว |
| LocalDate | 26+ | ใช่ | งานวันที่ทั่วไป |
| Calendar | 1+ | ไม่ (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