ホームページ >Java >&#&チュートリアル >Java API開発における時刻と日付の処理
Java 言語の普及に伴い、時刻と日付の処理は API 開発の一部として無視できないものになりました。時刻と日付の処理には、タイムゾーンや夏時間など、多くの複雑な問題が関係するため、Java では、これらの問題の処理を容易にする一連の時刻と日付のクラスが提供されています。
1. Java の時間クラス
Java には、java.util.Date、java.sql.Date、および java.time パッケージ内のクラスという 3 つの日付と時刻のクラスがあります。
java.util.Date クラスは Java のオリジナルの日付と時刻処理クラスです。このクラスにはいくつかの問題があります。タイムゾーンや夏時間の処理の問題など、このクラスは廃止されました。まだ使用できますが、日付と時刻の処理には java.time パッケージのクラスを使用することを強くお勧めします。
java.sql.Date クラスは java.util.Date のサブクラスですが、このクラスは java.util.Date の日付部分のみを表します。 date 情報が古いため、使用はお勧めできません。 JDBC では、java.sql.Date クラスが広く使用されており、データベース内の日付情報を処理するための一般的な型です。
Java 8 では、日付と時刻を処理する一連のクラスを提供する java.time パッケージが導入されました。このパッケージで提供されるクラスは可読性が高く、不変でスレッドセーフであり、さまざまな時刻と日付形式の処理を適切にサポートします。このパッケージで一般的に使用されるクラスは次のとおりです。
(1) LocalDate
LocalDate クラスは日付情報のみを表し、時間情報とタイム ゾーン情報は含まれません。このクラスを使用すると、2 つの日付間の日数、月数、年数などを計算するなど、日付を簡単に処理できます。このクラスのサンプル コードを次に示します。
// 获取当前日期 LocalDate today = LocalDate.now(); // 获取指定日期 LocalDate date = LocalDate.parse("2020-07-20"); // 计算两个日期之间的天数 long days = ChronoUnit.DAYS.between(today, date);
(2) LocalTime
LocalTime クラスは、日付情報やタイム ゾーン情報を含まない、時間情報を表します。このクラスは通常、現在時刻の取得、2 つの時刻の間の時間の計算など、時刻を処理するために使用されます。このクラスのサンプル コードを次に示します。
// 获取当前时间 LocalTime now = LocalTime.now(); // 获取指定时间 LocalTime time = LocalTime.parse("15:30"); // 计算两个时间之间的差值 Duration duration = Duration.between(now, time); long diff = duration.getSeconds();
(3) LocalDateTime
LocalDateTime クラスには、日付と時刻の情報が含まれますが、タイム ゾーンの情報は含まれません。このクラスは、現在の日付と時刻の取得、日付と時刻の結合など、日付と時刻の情報の組み合わせを処理するために使用できます。このクラスのサンプル コードを次に示します。
// 获取当前日期时间 LocalDateTime now = LocalDateTime.now(); // 获取指定日期时间 LocalDateTime dateTime = LocalDateTime.parse("2020-07-20T15:30:00"); // 将日期和时间合并 LocalDate date = LocalDate.parse("2020-07-20"); LocalTime time = LocalTime.parse("15:30"); LocalDateTime dateTime2 = LocalDateTime.of(date, time);
(4) ZonedDateTime
ZonedDateTime クラスには、日付、時刻、およびタイム ゾーンの情報が含まれています。このクラスを使用すると、タイム ゾーンをまたがる日付と時刻の情報を処理できます。このクラスのサンプル コードは次のとおりです:
// 获取当前日期时间和时区 ZonedDateTime now = ZonedDateTime.now(); // 获取指定时区的日期时间 ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZonedDateTime dateTime = ZonedDateTime.of(LocalDateTime.now(), zoneId);
2. 時刻と日付の書式設定
Java では、日付と時刻の書式設定は主に java.time.format の DateTimeFormatter クラスを使用します。パッケージ。 。このクラスは、日付と時刻の情報を書式設定するために使用できるさまざまな書式設定オプションを提供します。このクラスのサンプル コードを次に示します:
// 格式化日期 LocalDate date = LocalDate.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedDate = date.format(formatter); // 格式化时间 LocalTime time = LocalTime.now(); formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); String formattedTime = time.format(formatter); // 格式化日期时间 LocalDateTime dateTime = LocalDateTime.now(); formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDateTime = dateTime.format(formatter);
3. タイム ゾーンの処理
java.time パッケージでは、タイム ゾーンの処理に java.time.ZoneId クラスが使用されます。このクラスは、システムでサポートされているタイム ゾーン リストを取得するための一連の静的メソッドを提供し、いくつかの変換メソッドとタイム ゾーン情報の取得と設定を提供します。このクラスのサンプル コードを次に示します:
// 获取系统支持的时区列表 Set<String> zoneIds = ZoneId.getAvailableZoneIds(); // 将日期时间从一个时区转换为另一个时区 ZonedDateTime dateTime = ZonedDateTime.parse("2020-07-20T15:30:00+0800[Asia/Shanghai]"); ZoneId zoneId = ZoneId.of("America/New_York"); ZonedDateTime dateTimeInNewYork = dateTime.withZoneSameInstant(zoneId);
4. 夏時間の処理
通常、夏時間により時刻が変更されるため、夏時間を扱う場合は特別な注意が必要です。 Java では、夏時間処理は通常、ZoneRules クラスによって表されます。このクラスは、夏時間ルールを取得し、夏時間を計算するためのメソッドを提供します。これにより、夏時間の処理が容易になります。このクラスのサンプル コードは次のとおりです。
// 获取当前时区的夏令时规则 ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZoneRules rules = zoneId.getRules(); // 判断指定的时间是否是夏令时 LocalDateTime dateTime = LocalDateTime.now(); boolean isDst = rules.isDaylightSavings(dateTime.toInstant(zoneId.getRules().getOffset(dateTime)));
要約
Java API 開発では、時刻と日付の処理は非常に重要な部分です。 Java が提供する時刻と日付のクラスを使用すると、タイム ゾーンや夏時間など、さまざまな複雑な時刻と日付の問題を簡単に処理できます。時刻と日付のクラスを使用する場合、より良い結果を得るために、Java 8 で導入された java.time パッケージのクラスを処理に使用することに注意する必要があります。
以上がJava API開発における時刻と日付の処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。