android中12 AM / PM的时间格式错误

时间:2014-10-24 06:42:02

标签: android date time

我正在为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重新格式化日期。 这是正确的方法来设置闹钟时间吗?

1 个答案:

答案 0 :(得分:1)

我对你想要使用的符号有点困惑。表示AM,PM小时有两种方法。在0:00-11:59范围内或1:00-12:59范围内。你也没有使用它们,因此你会遇到代表你遇到的时间的麻烦。请阅读SimpleDateFormat中提供的不同选项。

同时限制使用您自己的会话 - 在任何地方使用sdk类,这样您就可以确保不会进入补充格式。