【问题标题】:How to set DateField value using a string containing the date and time?如何使用包含日期和时间的字符串设置 DateField 值?
【发布时间】:2011-09-04 08:42:01
【问题描述】:

我有以下字符串“29/05/2012 12:11 PM” 我想将此值添加到 DateField

我是这样做的:

String dateTime = "29/05/2012 12:11 PM";
long initialDateTime = System.currentTimeMillis();
SimpleDateFormat SDF_DateTime = new SimpleDateFormat("dd/MM/yyyy hh:mm aa");
DateField DF_DateTime = new DateField("Time: ", initialDateTime , SDF_DateTime, Field.FIELD_LEFT | DrawStyle.LEFT | Field.FOCUSABLE);
DF_DateTime.setTimeZone(TimeZone.getDefault());
DF_DateTime.setDate(stringToDate(dateTime));
add(DF_DateTime);

在哪里

public Date stringToDate(String s) 
{
    Calendar c = Calendar.getInstance(TimeZone.getDefault());
    c.set(Calendar.DAY_OF_MONTH, Integer.parseInt(s.substring(0, 2)));
    c.set(Calendar.MONTH, Integer.parseInt(s.substring(3, 5)) - 1);
    c.set(Calendar.YEAR, Integer.parseInt(s.substring(6, 10)));
    c.set(Calendar.HOUR, Integer.parseInt(s.substring(11, 13)));
    c.set(Calendar.MINUTE, Integer.parseInt(s.substring(14, 16)));
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.AM_PM, s.substring(17, 19).toLowerCase().equals("am") ? Calendar.AM : Calendar.PM);
    return c.getTime();
}


但该字段显示:“30/05/2012 12:11 AM
而不是“29/05/2012 12:11 PM

如果知道有用的话,我的设备在选项中设置为以下时区:“都柏林,伦敦 (GMT)”

对正在发生的事情有任何合乎逻辑的解释吗?

【问题讨论】:

    标签: blackberry date datefield rim-4.5 blackberry-os-v4.5


    【解决方案1】:

    我已经找到了解决方案,这里是为那些感兴趣的人准备的:

    c.set(Calendar.HOUR, Integer.parseInt(s.substring(11, 13)) % 12);
    

    因为在 Calendar.HOUR 的 javadoc 中指定:

    HOUR 用于 12 小时制(0 - 11)。中午和午夜用 0 表示,而不是用 12 表示

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多