Java日期时间 – 自定义日期格式模式 下面的列表显示了我们可以用来创建自定义数据格式模式的格式符号。 G 时代例如: G AD GGGG Anno Domini GGGGG A u 年 它可以是正数或负数。年是正数在一个时代开始日期之后。年份是时代开始日期之前的负数。2014年AD是2014年和2014年BC是-2014年。例如: u/uuu/uuuu 2014 uu 12 uuuuu 02014 y 年代 它计算从时代开始日期向前或向后的年份。它总是一个正数。2014年AD是2014年和2014年BC是2015年。在共同时代,0年是1 BC。 例如: y/yyy/yyyy 2014 yy 12 yyyyy 02014 D 一年中的(1 -366)例如: D 150 M/L 月份例如: M 5 MM 05 MMM Jul MMMM July d 日期 例如: d 21 dd 01 ddd 001 ddd 029 Q/q 每年的季度例如: Q 3 QQ 03 QQQ Q3 QQQQ 3rd quarter Y 每周一年例如: Y 2014 YY 12 YYY/YYYY 2014 w 周为基础的年度例如: w 31 W 周月例如: W 2 E 星期中的一天 例如: E 7 EE 07 EEE Sun EEEEE Sunday F 每月的星期几例如: F 1 a 上午/下午例如: a AM h 时钟小时AM/PM(1-12)例如: h 2 K 上午/下午时间(0-11)例如: K 3 k 时钟小时AM/PM(1-24)例如: k 7 H 时段(0-23)例如: H...
Java日期时间 – Java非ISO日历系统 LocalDate使用ISO日历系统,这是公历。 Java Date-Time API还支持其他日历,例如泰国佛教日历,Hijrah日历,Minguo日历和日历。 非ISO日历相关类在java.time.chrono包中定义。 对于每个可用的非ISO日历系统,有一个自定义的年表和自定义的Date类。 自定义的Chronology类表示日历系统,而自定义的Date类表示自定义日历系统中的日期。 每个自定义Chronology类都包含一个INSTANCE常量,表示该类的单例实例。 例子 以下代码显示获取泰国佛教日历中的当前日期: import java.time.chrono.ThaiBuddhistChronology; import java.time.chrono.ThaiBuddhistDate; public class Main { public static void main(String[] args) { ThaiBuddhistChronology thaiBuddhistChrono = ThaiBuddhistChronology.INSTANCE; ThaiBuddhistDate now = thaiBuddhistChrono.dateNow(); ThaiBuddhistDate now2 = ThaiBuddhistDate.now(); System.out.println("Current Date in Thai Buddhist: " + now); System.out.println("Current Date in Thai Buddhist: " + now2); } } 上面的代码生成以下结果。 例2 我们可以使用 from()方法将日历系统中的日期转换为另一个日历系统。 以下代码显示如何将ISO日期转换为泰语佛教日期,反之亦然。 import java.time.LocalDate; import java.time.chrono.ThaiBuddhistDate; public class Main { public static void main(String[] args) { ThaiBuddhistDate thaiBuddhistNow = ThaiBuddhistDate.now(); LocalDate isoNow = LocalDate.now(); System.out.println("Thai Buddhist Current Date: " + thaiBuddhistNow); System.out.println("ISO Current Date: " + isoNow); // Convert Thai Buddhist date to ISO date and vice versa ThaiBuddhistDate thaiBuddhistNow2 = ThaiBuddhistDate.from(isoNow); LocalDate isoNow2 = LocalDate.from(thaiBuddhistNow); System.out.println("Thai Buddhist Current Date...
Java日期时间 – Java Chrono现场单元 ChronoField ChronoField枚举定义了一组标准字段,如 AMPM_OF_DAY,DAY_OF_MONTH,DAY_OF_WEEK,DAY_OF_YEAR,ERA,HOUR_OF_DAY,MINUTE_OF_HOUR,MONTH_OF_YEAR,年年约SECOND_OF_MINUTE,YEAR_OF_ERA 。 以下代码显示了如何使用 ChronoField 从datetime中提取字段值。 import java.time.LocalDateTime; import java.time.temporal.ChronoField; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); System.out.println(now.get(ChronoField.YEAR)); System.out.println(now.get(ChronoField.MONTH_OF_YEAR)); System.out.println(now.get(ChronoField.DAY_OF_MONTH)); System.out.println(now.get(ChronoField.HOUR_OF_DAY)); System.out.println(now.get(ChronoField.HOUR_OF_AMPM)); System.out.println(now.get(ChronoField.AMPM_OF_DAY)); } } 上面的代码生成以下结果。 例2 以下代码显示了如何检查数据时间对象是否支持ChronoField。 import java.time.LocalDateTime; import java.time.temporal.ChronoField; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); System.out.println(now.isSupported(ChronoField.YEAR)); System.out.println(now.isSupported(ChronoField.HOUR_OF_DAY)); System.out.println(ChronoField.YEAR.isSupportedBy(now)); System.out.println(ChronoField.HOUR_OF_DAY.isSupportedBy(now)); } } 上面的代码生成以下结果。 ChronoUnit ChronoUnit枚举表示时间单位。 它包含以下常量:CENTURIES,DAYS,DECADES,ERAS,FOREVER,HALF_DAYS,HOURS,MICROS,MILLENNIA,MILLIS,MINUTES,MONTHS,NANOS,SECONDS,WEEKS和YEARS。 以下代码显示了如何使用ChronoUnit枚举常量。 import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; public class Main { public static void main(String[] args) { LocalDateTime now = LocalDateTime.now(); // Get the date time 10 days ago LocalDateTime localDateTime1 = now.minus(10, ChronoUnit.DAYS); System.out.println(localDateTime1); } } 上面的代码生成以下结果。
Java日期时间 – Java偏移日期时间 偏移时间 OffsetTime表示具有相对于UTC的固定区偏移的时间。 OffsetTime组合LocalTime和ZoneOffset。 系统默认时区用于在使用now()的偏移时间时获取区域偏移值。 以下代码显示如何创建偏移时间。 import java.time.OffsetTime; import java.time.ZoneOffset; public class Main { public static void main(String[] args) { // current offset time OffsetTime ot1 = OffsetTime.now(); System.out.println("Current offset time: " + ot1); // a zone offset +01:30 ZoneOffset offset = ZoneOffset.ofHoursMinutes(1, 30); OffsetTime offsetTime = OffsetTime.of(16, 40, 28, 0, offset); System.out.println(offsetTime); } } 上面的代码生成以下结果。 偏移日期时间 OffsetDateTime表示datetime,固定区偏移UTC。 OffsetDateTime组合LocalDateTime和ZoneOffset。 我们可以从偏移日期和时间提取本地日期和时间。 系统默认时区用于在偏移日期和时间使用now()时获取区域偏移值。 以下代码显示如何创建偏移日期时间。 import java.time.LocalDate; import java.time.LocalTime; import java.time.OffsetDateTime; import java.time.ZoneOffset; public class Main { public static void main(String[] args) { // Get the current offset datetime OffsetDateTime OffsetDateTime odt1 = OffsetDateTime.now(); // Create an offset datetime OffsetDateTime odt2 = OffsetDateTime.of(2012, 5, 11, 18, 10, 30, 0, ZoneOffset.UTC); // Get the local date and time from the offset datetime...