根据您希望
1317427200成为输出的愿望,有几个问题需要解决。
首先,正如其他人提到的那样,java已经使用UTC 1/1/1970纪元。除非您具有怪异的语言环境规则,否则通常无需计算历元并进行减法。
其次,当您创建新的日历时,它会初始化为“现在”,因此它包括一天中的时间。更改年/月/日不会影响“时间”字段。因此,如果希望它代表日期的午夜,则需要在设置日期之前将日历清零。
第三,您尚未指定应该如何处理时区。夏令时可能会导致特定的壁挂日历所表示的绝对秒数有所不同,具体取决于JVM的运行位置。由于时代是UTC,我们可能想在UTC时间工作?您可能需要向与之连接的系统的制造商寻求澄清。
第四,Java中的月份为零索引。一月是0,十月是9。
放在一起
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));calendar.clear();calendar.set(2011, Calendar.OCTOBER, 1);long secondsSinceEpoch = calendar.getTimeInMillis() / 1000L;那会给你
1317427200



