我正在尝试将一个字符串解析为一个日期,它给了我正确的日期,其中时间错误。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm aaa");
try {
Date date = formatter.parse("2015-08-20 05:00 AM");
Log.e("date", date+""); // Logcat printing Thu Aug 20 00:00:00 GMT+05:30 2015
} catch (ParseException e) {
Log.e("Error",e.toString());
}
正如您所看到的,无论每次解析显示00:00:00
的日期时间如何
我想要的是Thu Aug 20 05:00:00 GMT+05:30 2015
答案 0 :(得分:2)
似乎问题是你的模式String指定了am / pm,但是对于小时字符使用了大写的H
' s。这些表示24小时制,显然不会使用上午/下午。将小时字符更改为小写h
' s,表示上午/下午(0-11)的小时。
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa");
docs for SimpleDateFormat
解释各种可接受的模式字符。
答案 1 :(得分:1)
尝试以下代码
SimpleDateFormat format = new SimpleDateFormat("E, dd MMM yyyy hh:mm:ss z");
String dateToStr = format.format(new Date());
System.out.println("dateToStr=>" + dateToStr);
try {
Date strToDate = format.parse(dateToStr);
System.out.println("strToDate=>" + strToDate);
} catch (ParseException e) {
e.printStackTrace();
}
答案 2 :(得分:1)
也许它与时区问题有关,在什么时区是您的输入?,我建议您确保您的参数在UTC时区,然后使用这样的格式化程序:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm aaa");
formatter .setTimeZone(TimeZone.getTimeZone("UTC"));
答案 3 :(得分:0)
试试这段代码,你错过了一些代码
SimpleDateFormat mFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm aa", Locale.getDefault());
mFormatter.setTimeZone(TimeZone.getTimeZone("India"));
Date startDate = mFormatter.parse("2015-08-20 05:00 AM");
此代码对我来说很好。