加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在java中转换日期时出错

发布时间:2020-12-14 05:53:14 所属栏目: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).
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小时值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读