Steps to Format the Date and Time in Android
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 |
---|---|
dd | Date in numeric value |
E | Day in String (short form. Ex: Mon) |
EEEE | Day in String (full form. Ex: Monday) |
MM | Month in numeric value |
yyyy | Year in numeric value |
LLL | Month in String (short form. Ex: Mar) |
LLLL | Month in String (full form. Ex: March) |
HH | Hour in numeric value (24hrs timing format) |
KK | Hour in numeric value (12hrs timing format) |
mm | Minute in numeric value |
ss | Seconds in numeric value |
aaa | Displays AM or PM (according to 12hrs timing format) |
z | Displays the time zone of the region |
- Refer to the following code and its output to get a better idea of the above table.
Kotlin
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 // 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 } } |
Java
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); } } |
Output:
Date and Time Formatting in Android
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.