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小时值.