Java,将Date转换为String并返回生成错误的Date
发布时间:2020-12-15 05:08:50 所属栏目:Java 来源:网络整理
导读:我试图将Date转换为String,然后再转回Date.但是我发现最后的日期与原始日期不同,是什么给出的? //1975-06-20 Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR,1975); cal.set(Calendar.MONTH,5); cal.set(Calendar.DAY_OF_MONTH,20); cal.se
我试图将Date转换为String,然后再转回Date.但是我发现最后的日期与原始日期不同,是什么给出的?
//1975-06-20 Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR,1975); cal.set(Calendar.MONTH,5); cal.set(Calendar.DAY_OF_MONTH,20); cal.set(Calendar.HOUR,0); cal.set(Calendar.MINUTE,0); cal.set(Calendar.SECOND,0); System.out.println(cal); Date originalDate = cal.getTime(); System.out.println("Date 1: " + originalDate.toString()); SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"); Date date = sdf.parse(originalDate.toString()); System.out.println("Date 2: " + date.toString()); 上面代码的输出是: cal: java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Singapore",offset=28800000,dstSavings=0,useDaylight=false,transitions=9,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=1975,MONTH=5,WEEK_OF_YEAR=26,WEEK_OF_MONTH=5,DAY_OF_MONTH=20,DAY_OF_YEAR=179,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=0,HOUR_OF_DAY=16,MINUTE=0,SECOND=0,MILLISECOND=333,ZONE_OFFSET=28800000,DST_OFFSET=0] Date 1: Fri Jun 20 12:00:00 SGT 1975 Date 2: Fri Jun 20 11:30:00 SGT 1975 解决方法
可能是因为1982年新加坡的时区变化(30分钟).
http://www.timeanddate.com/worldclock/timezone.html?n=236&syear=1980 解析日期时,SimpleDateFormat将SGT作为UTC 8,并将其转换为UTC 7.5,即1982年之前的SGT.因此日期关闭了30分钟. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |