Java Date Calender SimpleFormat LocalTime LocalDate LocalDatetime DatetimeFormat

Date,Datetime,DatetimeFormat

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 格式化

/*****************************LocalDate LocalTime LocalDatetime***************************/
LocalDateTime now = LocalDateTime.now();    // 获取当前时间 2021-11-18T14:46:04.934266600
// now = LocalDateTime.of(2021,11,18,12,0,0);    // 获取指定时间
System.out.println(now.getYear());          // 获取当前年份 2021
System.out.println(now.getMonth());         // 获取当前月份 NOVEMBER
System.out.println(now.getMonthValue());    // 获取一年之中的第几月 11
System.out.println(now.get(ChronoField.MONTH_OF_YEAR)); // 获取当前月份 11
System.out.println(now.getDayOfYear());     // 获取当前一年之中的第几日 322
System.out.println(now.getDayOfMonth());    // 获取当前出于月份的第几日 18
System.out.println(now.getDayOfWeek());     // 获取当前星期数 THURSDAY
System.out.println(now.get(ChronoField.DAY_OF_WEEK)); // 获取当前一个星期的第几天 int 4
System.out.println(now.getHour());          // 获取小时 14
System.out.println(now.getMinute());        // 获取分 43
System.out.println(now.getSecond());        // 获取秒 46
System.out.println(now.getNano());          // 获取毫秒 270987200
System.out.println(now.getChronology());    // 获取使用的日历类型 ISO 常用的只有ISO,其他的有
System.out.println(now.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));  // 对齐这一天在这个星期在月初的位置
System.out.println(now.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));   // 对齐这一天在这个星期在年初的位置
System.out.println(now.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));          // 计算当前时间位于这一年的第几个星期
System.out.println(now.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));         // 计算当前时间位于这一个月的第几个星期

System.out.println(now.plusDays(1));        // 日期增加一天
System.out.println(now.minusDays(1));       // 日期减少一天
System.out.println(now.minusWeeks(1));      // 上个星期
System.out.println(now.plusWeeks(1));       // 下个星期
// ....

/*****************************LocalDate 独有***************************/
LocalDate date = LocalDate.now();
System.out.println(date.getEra());          // 获取时代
System.out.println(date.isLeapYear());      // 是否闰年

LocalDateTime now1 = LocalDateTime.of(2021,12,1,12,0,0);
// 获取季度
int monthValue = now1.getMonthValue();
System.out.println(monthValue % 3 == 0 ? monthValue / 3 : monthValue / 3 + 1);

// 转换格式
String time = "2021-11-18 16:19:13";
System.out.println(LocalDateTime.parse(time,format));

Duration

 //时间量可正可负。
        //获取1天的时间量(86400秒0纳秒)
        Duration d1=Duration.ofDays(1);
        System.out.println(d1);
        //获取-1小时的时间量(-3600秒0纳秒)
        Duration d2=Duration.ofHours(-1);
        System.out.println(d2);
        //获取10分钟的时间量
        Duration d3=Duration.ofMinutes(10);
        System.out.println(d3);
        //获取30秒钟的时间量
        Duration d4=Duration.ofSeconds(30);
        System.out.println(d4);
        //获取20毫秒的时间量
        Duration d5=Duration.ofMillis(20);
        System.out.println(d5);
        //获取1微秒的时间量
        Duration d6=Duration.ofNanos(1000);
        System.out.println(d6);
        //获取100纳秒的时间量
        Duration d7=Duration.ofNanos(100);
        System.out.println(d7);
        //第一个参数是秒数,第二个参数是纳秒数,而纳秒数可以是任意long类型的值,内部实现会根据传入的秒数和纳秒数的值进行调整,
        //使创建的Duration实例的nanos属性值保持在0~999999999范围内。
        //以下三个时间量等价
        Duration a1=Duration.ofSeconds(3, 1);
        System.out.println(a1);
        Duration a2=Duration.ofSeconds(4, -999_999_999);
        System.out.println(a2);
        Duration a3=Duration.ofSeconds(2, 1000_000_001);
        System.out.println(a3);
        //传一个时间单位,表示获取这个时间单位的n倍的时间量,以下表示获取10天的时间量。
        Duration d8=Duration.of(10, ChronoUnit.DAYS);
        System.out.println(d8);
        //从另一个时间量对象获取时间量,时间量对象可以是Duration类型也可以是Period类型
        Duration d9=Duration.from(d8);
        //看一下时间量对象的toString()方法能打印出什么
        System.out.println(d9.toString());//PT240H
        //parse(CharSequence)静态方法是通过解析字符串来创建一个时间量对象,
        //String/StringBuilder/StringBuffer都实现了CharSequence接口
        //那么字符串需要什么格式才会被解析成功呢?
        //"PnDTnHnMn.nS"或"-PnDTnHnMn.nS"格式,字符串前面如果是负号,则整个周期都取反。
        //"P" "D" "H" "M" "S"可以是大写或小写,这几个字符必须按顺序出现。
        //"nD" "nH" "nM" "n.nS"这四个部分在字符串中必须有至少一个。
        //"nD"表示n天,比如"3D","-2D"。一天的时间量被解析成刚好24小时。
        //"T"是日期和时间的分隔符,必须出现在时间三个部分的第一次出现之前(如果有时间的话)。如果存在"T",则必须在"T"之后至少包含一个时间部分。
        //"nH"表示n小时,比如"13H","-6H"。
        //"nM"表示n分钟
        //"n.nS"表示n.n秒,比如"45.345S",也可以是"45S",小数部分是可选的。小数点可以是点或逗号,小数部分的位数可以为0到9位。
        Duration d10=Duration.parse("PT20.345S");//被解析为20.345秒
        System.out.println(d10);
        Duration d11=Duration.parse("PT15M");//被解析为15分钟(其中一分钟为60秒)
        System.out.println(d11);
        Duration d12=Duration.parse("PT10H");//被解析为10小时(其中一小时为3600秒)
        System.out.println(d12);
        Duration d13=Duration.parse("P2D");//被解析为2天(一天为24小时或86400秒)
        System.out.println(d13);
        Duration d14=Duration.parse("P2DT3H4M");//被解析为2天3小时4分钟
        System.out.println(d14);
        Duration d15=Duration.parse("PT-6H3M");//被解析为负5小时57分钟(-6小时+3分钟)(-21420秒)
        System.out.println(d15);
        Duration d16=Duration.parse("-PT6H3M");//被解析为负6小时3分钟(-6小时-3分钟)(-21780秒)
        System.out.println(d16);
        Duration d17=Duration.parse("-PT-6H+3M");//被解析为5小时57分钟(+6小时-3分钟)(21420秒)
        System.out.println(d17);
        System.out.println(d17.get(ChronoUnit.SECONDS));
        System.out.println(d17.toSeconds());

Calender

SimpleFormat

LocalTime

LocalDate

LocalDatetime

DatetimeFormat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值