Im creating an alarm apps for android. I dont really understand about time format so i go googling and got this post.
I followed that post, but a bug still remains : My apps cant tell the difference between (lets say) 12:17 AM and 12:17 PM. So the bug will occurred if the hour is 12 .
What i did when taking the value form the TimePicker
(hh:m:aa) format :
String hour = "";
Calendar datetime = Calendar.getInstance();
datetime.set(Calendar.HOUR_OF_DAY, timeSchedule.getCurrentHour());
datetime.set(Calendar.MINUTE, timeSchedule.getCurrentMinute());
if (datetime.get(Calendar.AM_PM) == Calendar.AM && timeSchedule.getCurrentHour() == 0) //12 AM = 0
hour = "00"+ ":" + timeSchedule.getCurrentMinute();
else
hour = timeSchedule.getCurrentHour() + ":" + timeSchedule.getCurrentMinute();
With above code, 12:17 AM will become 00:17 while 12:17PM will become 12:17PM. This value is stored in the mysql Time format . Since i want to create an alarm apps, please kindly tell me whether i did is right or not .
And this is what i did to show them to the user, where 00:17 (taken from the result of above code) become 12:17AM (correct) but 12:17 become 12:17AM ( wrong ) :
String time = getItem(position).getTime(); //value from above code
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat newFormat = new SimpleDateFormat("hh:mm:aa");
String formatedTime = "";
try {
Date date = format.parse(time);
formatedTime = newFormat.format(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
To be honest, this is the first time i deal with somekind of alarm app, so please kindly tell me if i do something wrong. (beside my bug)
Thanks for your time.
UPDATE
This is what i did now :
I changed the mysql column from Time to Varchar, because Time wont let me insert "AM/PM".
After that :
String hour = "";
Calendar datetime = Calendar.getInstance();
datetime.set(Calendar.HOUR_OF_DAY, timeSchedule.getCurrentHour());
datetime.set(Calendar.MINUTE, timeSchedule.getCurrentMinute());
String am_pm = "";
if (datetime.get(Calendar.AM_PM) == Calendar.AM)
am_pm = "AM";
else
am_pm = "PM";
hour = (datetime.get(Calendar.HOUR) == 0) ?"12":datetime.get(Calendar.HOUR)+"";
final String time = hour+ ":" + datetime.get(Calendar.MINUTE) + " " + am_pm ;
Above code return 12:17 AM and 12:17 PM. With this, i dont have to use SimpleDateFormat
to re-format the date again. Is this the correct way to set the time for alarm?
I am a bit confused with the notation you want to use. There are two approaches for representing AM, PM hours. Either in the range of 0:00-11:59
or in the range 1:00-12:59
. You do not use either, thus you get troubles in representing the hours you encounter. PLease read through the different options provided in SimpleDateFormat
.
Also restrain from using your own conversition - use the sdk class everywhere, thus you will ensure you do not get into made up format.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.