如何转换字符串do Java.util.Date,包括ISO8601
我从连接器获取以下字符串: “2014-04-11T13:25:58.025+02:00” 我还计算了实际时间:如何转换字符串do Java.util.Date,包括ISO8601,java,parsing,date,calendar,timezone,Java,Parsing,Date,Calendar,Timezone,我从连接器获取以下字符串: “2014-04-11T13:25:58.025+02:00” 我还计算了实际时间: Calendar cal = Calendar.getInstance(); long timeNow = cal.getTimeInMillis(); 我应该定义,如果连接器的日期早于10分钟。 所以我试着用毫秒来比较这两个日期 //example date String timeString = "2014-04-11T13:25:58.025+02:00"; long dif
Calendar cal = Calendar.getInstance();
long timeNow = cal.getTimeInMillis();
我应该定义,如果连接器的日期早于10分钟。
所以我试着用毫秒来比较这两个日期
//example date
String timeString = "2014-04-11T13:25:58.025+02:00";
long difference = 660000;
Calendar cSchedStartCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
cSchedStartCal.setTimeZone(TimeZone.getTimeZone("Europe/Zurich"));
cSchedStartCal = DatatypeConverter.parseDateTime(timeString);
Date date = new Date(cSchedStartCal.getTime().getTime());
if (date.getTime() + difference < timeNow) {
System.out.println("too old");
} else {
System.out.println("ok");
}
//示例日期
字符串timeString=“2014-04-11T13:25:58.025+02:00”;
长差=660000;
Calendar cSchedStartCal=Calendar.getInstance(TimeZone.getTimeZone(“GMT”));
cSchedStartCal.setTimeZone(TimeZone.getTimeZone(“欧洲/苏黎世”);
cSchedStartCal=DatatypeConverter.parseDateTime(timeString);
日期日期=新日期(cSchedStartCal.getTime().getTime());
if(date.getTime()+差
但是当日期不太旧时,我发现它太旧了,因为时区肯定有问题
属性日期始终没有+02:00,这就是问题所在。
是否可以以适当的方式将时区小时数添加到日期中
我不可能使用joda图书馆。您需要:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
java.util.Date d = sdf.parse("2014-04-11T13:25:58.025+02:00");
XXX使用Java 7及更高版本
对于你的第二个问题,为什么这个简单的方法不把你的时区和日历去掉呢?许多人将时间量(如10分钟)与全球时间联系起来,而不是在本地时区的DST跳转期间
if (d.getTime() + 10 * 60 * 1000L < System.currentTimeMillis()) {
System.out.println("too old");
} else {
System.out.println("ok");
}
表示法
2014-04-11T15:25:58.025
没有偏移量,因此不具有可比性。请记住,此类表示由本地时间加上偏移组成。因此,为了获得UTC时区的全局时间,您必须减去偏移量,而不是添加偏移量。您的语句“属性日期始终没有+02:00,这就是问题所在”一点也不清楚<代码>日期-对象从不具有内部时区偏移。你为什么这么想?我已经试过了。它起作用了。但我仍然有问题,当我得到:d.getTime()是2014-04-11T13:25:58.025的毫秒,而不是2014-04-11T15:25:58.025时,2小时总是缺失,我不会手动添加2小时。
2014-04-11T13:25:58.025+02:00
2014-04-11T12:25:58.025+01:00
2014-04-11T11:25:58.025Z (zero offset - zulu time)