In my app I have an option to pause execution for a certain amount of time. I want to show the time when the execution will resume, including seconds, and I want the time string to be formatted according to sustem settings. This is the code I came up with:
long millis = getResumeTime();
String timeString;
timeString = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM).format(millis);
This does produce a formatted string with seconds, but it returns AM/PM-formatted time, even though I have set 24-hour time format in settings. It's even funnier since the time in the system tray is correctly formatted using 24 hour format.
I tried using DateFormat.getTimeFormat like this:
long millis = getResumeTime();
String timeString;
java.text.DateFormat df = android.text.format.DateFormat.getTimeFormat(this);
timeString = df.format(millis);
But the resulting string does not contain seconds, and I don't see a way to include them.
I'm running this code on Android 4.2 emulator. Am I missing something here? Is SimpleDateFormat not aware of 12/24 hour setting? If not, how do I get a string representation of time(including hours, minutes and seconds) in system format?
Easier solution is:
String timeString = DateUtils.formatDateTime(getContext(), timeInMillis,
DateUtils.FORMAT_SHOW_TIME);
This correctly handles 12/24 hour user setting.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With