【发布时间】:2015-10-31 09:11:37
【问题描述】:
我是 Android 新手,我想解析一个带有日期的字符串以将其转换为日历对象,然后将其发送到 Android 日历。我的字符串值为 Jue 28-05-2015 22:30(Jue for Jueves,thursday in spanish),我的代码如下所示:
fechaevento = Calendar.getInstance();
beginTime ="Jue 28-05-2016 22:30"
final SimpleDateFormat sdf = new SimpleDateFormat("EEE dd-MM-yyyy kk:mm");
btnCalendar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
fechaevento.setTime(sdf.parse(beginTime));
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, fechaevento.getTimeInMillis())
.putExtra(CalendarContract.Events.TITLE, nameEvento.getText().toString())
.putExtra(CalendarContract.Events.DESCRIPTION, descriptionEvento.getText().toString());
startActivity(intent);
} catch (ParseException e) {
//e.printStackTrace();
Log.i("FECHA_M", e.getMessage());
}
}
});
当我尝试运行它时,出现错误:无法解析的日期:“Jue 28-05-2016 22:30”(偏移量 0)
【问题讨论】:
-
这对我来说似乎是一个语言环境问题。你也确定你的格式中的“kk”吗?
-
@RC.:
kk模式表示 24 小时制中的一天中的小时。如果您使用hh,那么您会得到一个 12 小时制的时钟,并且您需要在模式中的某处使用 AM/PM 字段。 (TIL:Javadocs 将kk模式指定为 [1-24] 范围内的一个值,其中 [0-23] 对使用 24 小时表示法的语言环境中的人来说更有意义。Java 的日期/时间我想支持可能会使用另一种不正确的边缘情况) -
我知道“kk”是什么意思,只是第一次看到,所以很奇怪;这里我们使用
00:10表示午夜十点(我们使用 24 小时制) -
@RC。对不起,我没有从你的评论中意识到你知道。我不是故意居高临下的。
-
@Barend 不用担心 :)
标签: android date simpledateformat unparseable