ตัวอย่างนี้แสดงวิธีการใช้ OffsetDateTime API (Java 8 Time API) เพื่อดึง Local Date ปัจจุบันใน Android ต้องการ API 26+ (Android 8.0 Oreo) หรือใช้ API Desugaring สำหรับ API ต่ำกว่า
ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่
เปิด Android Studio ไปที่ File → New Project
ขั้นตอนที่ 2: เพิ่ม Layout XML
เพิ่มโค้ดใน res/layout/activity_main.xml ใช้ ConstraintLayout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Local Date"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
ขั้นตอนที่ 3: เพิ่มโค้ด Java
เพิ่มโค้ดใน src/MainActivity.java:
package com.example.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.time.OffsetDateTime;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.date);
// ตรวจสอบ API Level (ต้องการ 26+)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
OffsetDateTime offset = OffsetDateTime.now();
// ดึง Local Date (ไม่รวมเวลาและ Timezone)
textView.setText(String.valueOf(offset.toLocalDate()));
} else {
textView.setText("Requires API 26+");
}
}
}
เกี่ยวกับ Java 8 Time API ใน Android:
OffsetDateTime- วันที่/เวลาพร้อม Offset (เช่น 2024-01-15T10:30+07:00)toLocalDate()- ดึงเฉพาะวันที่ (2024-01-15)toLocalTime()- ดึงเฉพาะเวลา (10:30)toLocalDateTime()- ดึงวันที่/เวลาโดยไม่มี OffsettoInstant()- แปลงเป็น Instant (UTC)
การใช้งานกับ API ต่ำกว่า 26 (API Desugaring)
ใน build.gradle (Module: app) เพิ่ม:
android {
defaultConfig {
multiDexEnabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// เปิดใช้งาน Core Library Desugaring
coreLibraryDesugaringEnabled true
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2'
// ...
}
แล้ว Sync Gradle - จะสามารถใช้ java.time.* ได้ใน API 21+
การทดสอบ
รันแอปพลิเคชัน จะแสดงวันที่ปัจจุบันในรูปแบบ YYYY-MM-DD (เช่น 2024-01-15)

ในผลลัพธ์ แสดงวันที่ปัจจุบัน (Local Date)