如果给定了年、月、日、小时、分钟和秒,创建Java UTC (GMT)时间戳的正确方法是什么?
我考虑过的选项,但还没有被说服的:
1-使用已弃用的Date构造函数
java.util.Date date = new java.util.Date(year - 1900, month, dayOfMonth, hour, minute, second);
long timestamp = date.getTime();
2 - 使用时区设置为GMT的日历
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, second);
c.set(Calendar.MILLISECOND, 0);
long timestamp = c.getTimeInMillis();
我的问题之一是在没有混淆更多时区问题的情况下,我发现很难进行测试。
是否有使用标准 API 的明确正确方法?
更新:希望使用标准 JavaSE 得到答案。我知道 Joda-Time 很棒,但在这种情况下不可行。
java.util.Date
,java.util.Calendar
和java.text.SimpleDateFormat
,现在已经成为遗留系统,被内置于Java 8和Java 9的java.time类所取代。请参阅Oracle的教程。 - undefined