在Android中将字符串格式化为日期,但结果日期不正常

时间:2015-03-26 12:30:44

标签: android date formatting

在应用程序中,我已经完成了用户使用DAte和Time PickerFragments选择一些日期和时间。

当选择日期时,我把它放在TextViews中。之后,我需要验证用户选择的日期是否正确。我的意思是,结束日期不能早于开始日期。

为了测试转换是否正常,我已经提供了此代码:

String start_date = (String) tv_start_date.getText();
String end_date = (String) tv_end_date.getText();
String start_hour = (String) tv_start_hour.getText();
String end_hour = (String) tv_end_hour.getText();
String auxiliar = start_date  + " " + start_hour;
String auxiliar2 = end_date + " " + end_hour;

SimpleDateFormat sdf_aux = new SimpleDateFormat("dd/mm/yy hh:mm");

Date auuuux = sdf_aux.parse(auxiliar);
Date auuuux2 = sdf_aux.parse(auxiliar2);

Log.d("Meeting", "Inicio: Start--> "+auuuux.toString());
Log.d("Meeting", "FIN: END--> "+auuuux2.toString());

但是当我看到Log时,我可以看到日期不正确:

几张图片:

enter image description here enter image description here

日志:

03-26 13:25:27.657: D/Meeting(15255): Start--> Mon Jan 26 13:25:00 CET 2015
03-26 13:25:27.657: D/Meeting(15255): END--> Tue Jan 27 14:26:00 CET 2015

正如您所看到的,今天是2015年3月26日星期四,但如果您看到日志,那就是星期一!

我该如何解决? 我做错了什么?

1 个答案:

答案 0 :(得分:2)

您在日期格式中输入了错误的字符串:

 SimpleDateFormat sdf_aux = new SimpleDateFormat("dd/mm/yy hh:mm");

必须是:

 SimpleDateFormat sdf_aux = new SimpleDateFormat("dd/MM/yy hh:mm");

因为大写字母M是月份,小时间是分钟......

修改

要以24小时格式获取时间,您必须将h更改为H:

  SimpleDateFormat sdf_aux = new SimpleDateFormat("dd/MM/yy HH:mm");