Java 为什么日期输出看起来像这样(预期结果和实际结果之间的差异是一个小时)?
我想知道如何从约会中减去小时数。我已经创建了一个方法来实现这一点Java 为什么日期输出看起来像这样(预期结果和实际结果之间的差异是一个小时)?,java,Java,我想知道如何从约会中减去小时数。我已经创建了一个方法来实现这一点 public static long addHoursToDate(String dateStr, int hours) throws ParseException { final Calendar result = new GregorianCalendar(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("
public static long addHoursToDate(String dateStr, int hours) throws ParseException {
final Calendar result = new GregorianCalendar();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
Date date = simpleDateFormat.parse(dateStr);
result.setTime(date);
result.add(Calendar.HOUR, hours);
return result.getTimeInMillis();
}
下面是我如何使用这个方法
final long expectedResultInMillis = 1328072399000L;
final long resultInMillis = addHoursToDate("2012-01-31 22:59:59.999+0300", 10);
if (expectedResultInMillis != resultInMillis) {
System.out.println("Unexpected result received in addHoursToDate method: " + resultInMillis);
}
我想检查我的方法是否正确。所以我写了一些代码来检查。
我使用网站——”https://currentmillis.com/“为了得到预期的数百万美元。我在这个网站上的参数是当地时区(UTC+3h)莫斯科标准,2012/02/01 08:59:59。该站点的结果为1328072399000。
我的方法(resultInMillis)的结果是132807599999。如果我在网站上使用resultInMillis,我将获得Wed Feb 01 2012 09:59:59(当地时间和日期)。看起来相差一个小时
为什么预期的百万和结果的百万是不同的?
你能帮忙吗
谢谢,Alexey返回了
1328097599
,因此可能expectedResultInMillis
是错误的。尝试不同的网站获取expectedResultInMillis
@ymonad我很肯定你是对的,是网站错了。似乎“欧洲/莫斯科”时区中的“2012-01-31 22:59:59.999”比UTC早4小时。请尝试以下内容:ZoneDateTime.of(2012,1,31,22,59,59999000000,ZoneId.of(“欧洲/莫斯科”)
@ymonad,谢谢。我已经尝试过了”。在这个网站上,时间戳是1328072399。