java.time
java.util
Date-Time API とその書式設定 APIはSimpleDateFormat
時代遅れで、エラーが発生しやすいものです。それらの使用を完全に停止し、最新の Date-Time APIに切り替えることをお勧めします*。
java.time
最新の Date-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が表示する方法です。

最新の Date-Time API の詳細については、Trail: Date Timeを参照してください。
アップデート:
より単純なバージョン(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 に固執する必要がある場合は、 java.time機能のほとんどを Java 6 & 7 にバックポートするThreeTen-Backportを使用できます。Androidプロジェクトと Android API で作業している場合レベルはまだ Java-8 に準拠していません。desugarで利用可能な Java 8+ APIと Android プロジェクトで ThreeTenABP を使用する方法 を確認してください。