[FIXED] How to show the live DateTime as a textView (Like a digital watch) in Android Studio?

Issue

I have made two textView in an xml file where one textView shows current date and another shows current time as text.

Now, I have used the java Calendar.getInstance().getTime() method to get the date & time information. But it is acting as a static view i.e. it is not changing the date & time like a digital clock.

Now I am trying to show the textViews to show the current date & time in synchronization with device-system’s date & time. That means, suppose now it is 11:59:59 PM in the night and the date is 7th Sep, 2022. Just after 1s, my time textView should show the time as 12:00:00 AM and date should show as 8th Sep, 2022. And it should continue to change the time after every 1s like a digital clock. Last of all, there should not be any delay in between system dateTime & app dateTime i.e. perfectly synchronised.

How to do that??

public class MainActivity extends AppCompatActivity {

    TextView textDate, textClock;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textDate = findViewById(R.id.textDate);
        textClock = findViewById(R.id.textClock);
        setDateTime();
    }

    private void setDateTime() {
        Date c = Calendar.getInstance().getTime();
        SimpleDateFormat df = new SimpleDateFormat("dd MMM, yyyy", Locale.getDefault());
        SimpleDateFormat df_clock = new SimpleDateFormat("hh:mm:ss a", Locale.getDefault());
        String formattedDate = df.format(c);
        String formattedClock = df_clock.format(c);

        textDate.setText(formattedDate);
        textClock.setText(formattedClock);
    }
}

Solution

There’s already a TextClock class in Android which you should be able to use. Try replacing your two TextViews with these and set the formats to your patterns.

Answered By – PPartisan

Answer Checked By – David Goodson (Easybugfix Volunteer)

Leave a Reply

(*) Required, Your email will not be published