在java中转换日期时出错

前端之家收集整理的这篇文章主要介绍了在java中转换日期时出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
String date = jsonobject.getString("needbydate");
DateFormat df = new SimpleDateFormat("MMM/dd/yyyy");
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
Date startDate = sdf.parse(date);
String needbydate = df.format(startDate).toString()+"";

怎么了::

>一开始

date = 2014-12-17T21:37:00 00:00

>最后

needbydate = 2014年12月18日

17改为18 ….我在转换中做错了什么

编辑:

String date=jsonobject.getString("needbydate");
            DateFormat df = new SimpleDateFormat("MMM/dd/yyyy",Locale.ENGLISH);
            DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss",Locale.ENGLISH);
            sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
            Date startDate;
            startDate = sdf.parse(date);
            needbydate = df.format(startDate).toString()+"";

解决方法

您的日期格式使用系统默认时区.这对你的输入没问题,因为它明确指定了UTC偏移 – 但对于你的输出,你只是得到了一个日期.因此,它会显示您系统时区中该时间点的日期.

你需要考虑你想要的时区 – 以及你的输入是否受到非零偏移的影响.您可以使用DateFormat.setTimeZone设置输出时使用的时区. (例如,2014-12-17T21:37:00-05:00应显示为12月18日(UTC)还是12月17日(源时区)?)

您也应该使用输入格式的HH而不是hh,因为它显然是24小时值而不是12小时值.

原文链接:https://www.f2er.com/java/120978.html

猜你在找的Java相关文章