Date and Time Formatting in Android

19 Feb, 2021
Date and Time in Android are formatted using the SimpleDateFormat library from Java, using Calendar instance which helps to get the current system date and time. The current date and time are of the type Long which can be converted to a human-readable date and time. In this article, it’s been discussed how the Date and Time values can be formatted in various formats and displayed. Have a look at the following image to get an idea of the entire discussion.
Step 1: Create an empty activity project
Using Android Studio create an empty activity project. Refer to Android | How to Create/Start a New Project in Android Studio?
Step 2: Working with the activity_main.xml file
The main layout of the activity file containing 8 TextViews. One to show the current system date and time value in Long type, and others to display the same date and time value in a formatted human-readable way.
To implement the UI invoke the following code inside the activity_main.xml file.
XML
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout     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"    tools:ignore="HardcodedText">      <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"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toTopOf="parent" />      <!--text view to show the current        date and time 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"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toTopOf="parent" />      <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 and Time formatted :"        android:textSize="18sp"        android:textStyle="bold"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/dateTimeLongValue" />      <!--text views to show the current date and        time in formatted and human readable way-->    <TextView        android:id="@+id/format1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginStart="16dp"        android:layout_marginTop="16dp"        android:textSize="18sp"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/textView" />      <TextView        android:id="@+id/format2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginStart="16dp"        android:layout_marginTop="16dp"        android:textSize="18sp"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/format1" />      <TextView        android:id="@+id/format3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginStart="16dp"        android:layout_marginTop="16dp"        android:textSize="18sp"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/format2" />      <TextView        android:id="@+id/format4"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginStart="16dp"        android:layout_marginTop="16dp"        android:textSize="18sp"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/format3" />      <TextView        android:id="@+id/format5"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginStart="16dp"        android:layout_marginTop="16dp"        android:textSize="18sp"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/format4" />      <TextView        android:id="@+id/format6"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginStart="16dp"        android:layout_marginTop="16dp"        android:textSize="18sp"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/format5" />      <TextView        android:id="@+id/format7"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginStart="16dp"        android:layout_marginTop="16dp"        android:textSize="18sp"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/format6" />  </androidx.constraintlayout.widget.ConstraintLayout>
Step 3: Working with the MainActivity file
Understanding the way of formatting the date and time in Android using SimpleDateFormat 
Firstly, the instance of the Calendar is created and the desired format of the date and time to be shown is passed to the SimpleDateFormat method. The String should include the following characters and one may include the separators like -, / etc.
The below table includes the characters to be used to generate the most used common pattern of date and time.
Character to be used
Output
Refer to the following code and its output to get a better idea of the above table.
Kotlin
Java
import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.TextViewimport java.text.SimpleDateFormatimport 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          // register all the text view with appropriate IDs        val dateTimeInLongTextView: TextView = findViewById(R.id.dateTimeLongValue)        val format1: TextView = findViewById(R.id.format1)        val format2: TextView = findViewById(R.id.format2)        val format3: TextView = findViewById(R.id.format3)        val format4: TextView = findViewById(R.id.format4)        val format5: TextView = findViewById(R.id.format5)        val format6: TextView = findViewById(R.id.format6)        val format7: TextView = findViewById(R.id.format7)          // get the Long type value of the current system date        val dateValueInLong: Long = System.currentTimeMillis()        dateTimeInLongTextView.text = dateValueInLong.toString()          // different format type to format the         // current date and time of the system        // format type 1        calendar = Calendar.getInstance()        simpleDateFormat = SimpleDateFormat("dd.MM.yyyy HH:mm:ss aaa z")        dateTime = simpleDateFormat.format(calendar.time).toString()        format1.text = dateTime          // format type 2        calendar = Calendar.getInstance()        simpleDateFormat = SimpleDateFormat("dd-MM-yyyy HH:mm:ss aaa z")        dateTime = simpleDateFormat.format(calendar.time).toString()        format2.text = dateTime          // format type 3        calendar = Calendar.getInstance()        simpleDateFormat = SimpleDateFormat("dd/MM/yyyy HH:mm:ss aaa z")        dateTime = simpleDateFormat.format(calendar.time).toString()        format3.text = dateTime          // format type 4        calendar = Calendar.getInstance()        simpleDateFormat = SimpleDateFormat("dd.LLL.yyyy HH:mm:ss aaa z")        dateTime = simpleDateFormat.format(calendar.time).toString()        format4.text = dateTime          // format type 5        calendar = Calendar.getInstance()        simpleDateFormat = SimpleDateFormat("dd.LLLL.yyyy HH:mm:ss aaa z")        dateTime = simpleDateFormat.format(calendar.time).toString()        format5.text = dateTime          // format type 6        calendar = Calendar.getInstance()        simpleDateFormat = SimpleDateFormat("E.LLLL.yyyy HH:mm:ss aaa z")        dateTime = simpleDateFormat.format(calendar.time).toString()        format6.text = dateTime          // format type 7        calendar = Calendar.getInstance()        simpleDateFormat = SimpleDateFormat("EEEE.LLLL.yyyy KK:mm:ss aaa z")        dateTime = simpleDateFormat.format(calendar.time).toString()        format7.text = dateTime    }}
import android.os.Bundle;import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import java.text.SimpleDateFormat;import java.util.Calendar;  public class MainActivity extends AppCompatActivity {      TextView dateTimeInLongTextView, format1, format2,             format3, format4, format5, format6, format7;      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          String dateTime;        Calendar calendar;        SimpleDateFormat simpleDateFormat;          // register all the text view with appropriate IDs        dateTimeInLongTextView = (TextView) findViewById(R.id.dateTimeLongValue);        format1 = (TextView) findViewById(R.id.format1);        format2 = (TextView) findViewById(R.id.format2);        format3 = (TextView) findViewById(R.id.format3);        format4 = (TextView) findViewById(R.id.format4);        format5 = (TextView) findViewById(R.id.format5);        format6 = (TextView) findViewById(R.id.format6);        format7 = (TextView) findViewById(R.id.format7);          // get the Long type value of the current system date        Long dateValueInLong = System.currentTimeMillis();        dateTimeInLongTextView.setText(dateValueInLong.toString());          // different format type to format the        // current date and time of the system        // format type 1        calendar = Calendar.getInstance();        simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss aaa z");        dateTime = simpleDateFormat.format(calendar.getTime()).toString();        format1.setText(dateTime);          // format type 2        calendar = Calendar.getInstance();        simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss aaa z");        dateTime = simpleDateFormat.format(calendar.getTime()).toString();        format2.setText(dateTime);          // format type 3        calendar = Calendar.getInstance();        simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss aaa z");        dateTime = simpleDateFormat.format(calendar.getTime()).toString();        format3.setText(dateTime);          // format type 4        calendar = Calendar.getInstance();        simpleDateFormat = new SimpleDateFormat("dd.LLL.yyyy HH:mm:ss aaa z");        dateTime = simpleDateFormat.format(calendar.getTime()).toString();        format4.setText(dateTime);          // format type 5        calendar = Calendar.getInstance();        simpleDateFormat = new SimpleDateFormat("dd.LLLL.yyyy HH:mm:ss aaa z");        dateTime = simpleDateFormat.format(calendar.getTime()).toString();        format5.setText(dateTime);          // format type 6        calendar = Calendar.getInstance();        simpleDateFormat = new SimpleDateFormat("E.LLLL.yyyy HH:mm:ss aaa z");        dateTime = simpleDateFormat.format(calendar.getTime()).toString();        format6.setText(dateTime);          // format type 7        calendar = Calendar.getInstance();        simpleDateFormat = new SimpleDateFormat("EEEE.LLLL.yyyy KK:mm:ss aaa z");        dateTime = simpleDateFormat.format(calendar.getTime()).toString();        format7.setText(dateTime);    }}
raghav14
Android-Date-time
Technical Scripter 2020
Android
Kotlin
Technical Scripter
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.