Formatting dates and times in Android involves utilizing the SimpleDateFormat library from Java. The process often begins with acquiring the current system date through a Calendar instance. This captured date and time, represented in Long data type, can then be transformed into a more user-friendly human-readable format. The following article delves into the techniques for formatting Date values into diverse formats, ultimately enabling their display in a visually understandable manner.
Formatting dates and times in Android using Kotlin can be done using the java.text.SimpleDateFormat class or the newer java.time.format.DateTimeFormatter class (for Android API level 26 and higher). Here's how you can format dates using both approaches: Working with the activity_main.xml file
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="32dp" android:text="Date and Time value in Long type :" android:textSize="18sp" android:textStyle="bold"/> <!--text view to show the current date in Long type--> <TextView android:id="@+id/dateTimeLongValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="64dp" android:textSize="18sp" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="64dp" android:text="Date formatted :" android:textSize="18sp" android:textStyle="bold"/> <!--text views to show the current date in formatted --> <TextView android:id="@+id/dateformat1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:textSize="18sp"/> <TextView android:text="Time formatted :" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="64dp" android:textSize="18sp"/> <TextView android:id="@+id/timeformat1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="14dp" android:textSize="18sp"/> </LinearLayout
Working with the MainActivity file To initiate the process, begin by crafting an instance of the Calendar class. Subsequently, feed the intended format for displaying the date and time and time into the SimpleDateFormat function. The format string ought to encompass specific characters, while also allowing the option to introduce separators like hyphens or slashes as needed.
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView import java.text.SimpleDateFormat import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var dateTime: String var calendar: Calendar var simpleDateFormat: SimpleDateFormat val dateTimeInLongTextView: TextView = findViewById(R.id.dateTimeLongValue) val dateformat1: TextView = findViewById(R.id.dateformat1) val timeformat1: TextView = findViewById(R.id.timeformat1) // get the Long type value of the current system date val dateValueInLong: Long = System.currentTimeMillis() dateTimeInLongTextView.text = dateValueInLong.toString() calendar = Calendar.getInstance() simpleDateFormat = SimpleDateFormat("dd.MM.yyyy ") dateTime = simpleDateFormat.format(calendar.time).toString() dateformat1.text = dateTime simpleDateFormat = SimpleDateFormat("HH:mm:ss") dateTime = simpleDateFormat.format(calendar.time).toString() timeformat1.text = dateTime } }
Remember to replace textView with the appropriate UI element where you want to display the formatted date and time. Feel free to adjust the format pattern and UI elements according to your preferences and requirements.