java.time
java.util
日期时间 API 及其格式化 API已SimpleDateFormat
过时且容易出错。建议完全停止使用它们并切换到现代 Date-Time API *。
使用java.time
现代日期时间 API 的解决方案:
import java.time.LocalDate;
import java.time.ZoneOffset;
public class Main {
public static void main(String[] args) {
//Test
System.out.println(inMillis(2021,6,19,8,30));
}
public static long inMillis(int year, int month, int day, int hour, int min) {
return LocalDate.now()
.atStartOfDay(ZoneOffset.UTC)
.withYear(year)
.withMonth(month)
.withDayOfMonth(day)
.withHour(hour)
.withMinute(min)
.toInstant()
.toEpochMilli();
}
}
输出:
1624091400000
ONLINE DEMO
这是http://www.epochconverter.com的显示方式:
从Trail: Date Time了解有关现代日期时间 API 的更多信息。
更新:
一个更简单的版本(感谢 Ole VV):
public static long inMillis(int year, int month, int day, int hour, int min) {
return OffsetDateTime.of(year, month, day, hour, min, 0, 0, ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
}
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和 Android API 工作level 仍然不符合 Java-8,请检查Java 8+ APIs available through desugaring和How to use ThreeTenABP in Android Project。