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