我正在为Android创建一个警报应用程序。我真的不了解时间格式,所以我去google搜索并获得this帖子。
我关注了那篇文章,但仍然存在一个错误:我的应用程序无法区分(比如说)上午12:17到下午12:17。因此,如果小时为12 ,则会出现错误。
从TimePicker
(hh:m:aa)格式获取值时我做了什么:
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();
上述代码,12:17 AM将成为00:17,而下午12:17将成为下午12:17。此值存储以 mysql时间格式。由于我想创建一个警报应用程序,请告诉我我的做法是否正确。
这就是我向用户展示的内容,其中00:17(取自上述代码的结果)变为12:17 AM(正确)但12:17变为12:17 AM(错误< / strong>):
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();
}
老实说,这是我第一次处理某种警报应用程序,所以请告诉我是否做错了。 (在我的错误旁边)
感谢您的时间。
更新
这就是我现在所做的:
我将mysql列从Time改为,因为Time不会让我插入&#34; AM / PM&#34;。
之后:
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 ;
以上代码返回上午12:17和下午12:17。有了这个,我不必须再次使用SimpleDateFormat
重新格式化日期。 这是正确的方法来设置闹钟时间吗?
答案 0 :(得分:1)
我对你想要使用的符号有点困惑。表示AM,PM小时有两种方法。在0:00-11:59
范围内或1:00-12:59
范围内。你也没有使用它们,因此你会遇到代表你遇到的时间的麻烦。请阅读SimpleDateFormat
中提供的不同选项。
同时限制使用您自己的会话 - 在任何地方使用sdk类,这样您就可以确保不会进入补充格式。