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。