एंड्रॉइड में कोटलिन का उपयोग करके दिनांक/समय फॉर्मेटिंग
यह उदाहरण दर्शाता है कि SimpleDateFormat (लीगेसी) और आधुनिक java.time API (API 26+) का उपयोग करके दिनांक और समय को कैसे फॉर्मेट किया जाए।
चरण 1: नया प्रोजेक्ट बनाएं
एंड्रॉइड स्टूडियो में File → New Project चुनें।
चरण 2: लेआउट (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:text="Tutorials Point"
android:textAlignment="center"
android:textColor="@android:color/holo_green_dark"
android:textSize="32sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textViewDateTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textAlignment="center"
android:textSize="18sp"
android:textStyle="bold|italic"
android:textColor="@android:color/black" />
<Button
android:id="@+id/btnRefresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textViewDateTime"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="समय ताज़ा करें" />
</RelativeLayout>
चरण 3: MainActivity.kt (दोनों दृष्टिकोण)
import android.os.Build
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.annotation.RequiresApi
import java.text.SimpleDateFormat
import java.util.*
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.ZoneId
class MainActivity : AppCompatActivity() {
private lateinit var textViewDateTime: TextView
private lateinit var btnRefresh: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
textViewDateTime = findViewById(R.id.textViewDateTime)
btnRefresh = findViewById(R.id.btnRefresh)
btnRefresh.setOnClickListener { updateDateTime() }
updateDateTime() // प्रारंभिक प्रदर्शन
}
private fun updateDateTime() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// आधुनिक java.time API (API 26+)
textViewDateTime.text = formatWithModernAPI()
} else {
// लीगेसी SimpleDateFormat (पुराने API के लिए)
textViewDateTime.text = formatWithLegacyAPI()
}
}
// आधुनिक दृष्टिकोण (अनुशंसित)
@RequiresApi(Build.VERSION_CODES.O)
private fun formatWithModernAPI(): String {
val now = LocalDateTime.now(ZoneId.systemDefault())
val formatter = DateTimeFormatter.ofPattern("EEEE, dd MMMM yyyy 'को' hh:mm:ss a", Locale.getDefault())
return now.format(formatter)
}
// लीगेसी दृष्टिकोण
private fun formatWithLegacyAPI(): String {
val calendar = Calendar.getInstance()
val sdf = SimpleDateFormat("EEEE, dd MMMM yyyy 'को' hh:mm:ss a", Locale.getDefault())
return sdf.format(calendar.time)
}
}
चरण 4: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.datetimeformat">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
सामान्य दिनांक पैटर्न:
| पैटर्न | उदाहरण आउटपुट | विवरण |
|---|---|---|
yyyy-MM-dd | 2024-01-15 | ISO दिनांक |
dd/MM/yyyy | 15/01/2024 | भारतीय दिनांक |
EEEE, dd MMMM yyyy | सोमवार, 15 जनवरी 2024 | पूर्ण दिनांक |
HH:mm:ss | 14:30:45 | 24 घंटे समय |
hh:mm a | 02:30 PM | 12 घंटे समय |
yyyy-MM-dd'T'HH:mm:ss | 2024-01-15T14:30:45 | ISO 8601 |
java.time लाभ (API 26+):
- थ्रेड-सुरक्षित: SimpleDateFormat थ्रेड-सुरक्षित नहीं है
- अपरिवर्तनीय: दिनांक-समय ऑब्जेक्ट अपरिवर्तनीय हैं
- बेहतर API: सहज ज्ञान युक्त विधि नाम (plusDays, minusHours)
- टाइम ज़ोन समर्थन: ZoneId, ZonedDateTime के साथ अंतर्निहित
- पार्सिंग: DateTimeFormatter अधिक मजबूत है
API 26 से कम के लिए Desugar सक्षम करें (build.gradle):
android {
defaultConfig {
multiDexEnabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.4"
}