Java 日期类

Java 日期类

第一代日期类

  1. Date, 精确到毫秒, 代表特定的瞬间
  2. SimpleDateFormat, 允许进行格式化
  3. 应用实例, Date_.java

在这里插入图片描述

date.getTime()默认的输出格式是国外的, 需要格式转换. 用SimpleDateFormat指定输出的形式

用API手册, 比上网找博客要好用得多.

package com.zhx.date_;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 朱洪曦
 * @version 1.0
 */
public class Date01 {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        Date date1 = new Date(1234535745);
        System.out.println(date.getTime());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        String format = sdf.format(date1);
        System.out.println(format);

        // 可以把格式化字符串转成Date
        String s = "1996年01月01日 10:20:30 星期一";
        Date parse = sdf.parse(s);
        System.out.println(sdf.format(parse));

    }
}

第二代日期类

  1. 主要就是Calendar类.
  2. Calendar是抽象类, 为特定瞬间与一组日历字段的转换提供了方法, 并为操作日历字段提供了一些方法.
  3. 构造器是私有的, 通过getInstance获取实例, 提供了大量的方法和字段
  4. 其中Calendar.MONTH从0开始

第三代日期类

前两代的不足, Calender的问题

  1. 日期和时间应该是不可变的
  2. 偏移性, 月份从0开始
  3. 格式化: Calender不能格式化
  4. 不是线程安全; 不能处理闰秒(每两天多出1秒)

第三代常用方法

  1. LocalDate(日期), LocalTime(时间), LocalDateTime(日期时间)
  2. LocalDateTime.now() 返回表示当前日期时间的对象
package com.zhx.date_;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * @author 朱洪曦
 * @version 1.0
 */
public class LocalDate_ {
    public static void main(String[] args) {
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);
        // ldt.getYear()
        // ldt.getMonth()
        // ldt.getSecond()
        System.out.println("年 = " + ldt.getYear());
        System.out.println("月 = " + ldt.getMonth());
        System.out.println("月 = " + ldt.getMonthValue());

        LocalDate now = LocalDate.now();
        System.out.println(now);

    }
}

  1. 使用 DateTimeFormatter 对时间进行格式化

时间戳

可以在时间戳和Date之间转换

Date date = Date.from(instant)

Instant instant = date.toInstant();

课后练习

指定反转字符串

package com.zhx.date_;

/**
 * @author 朱洪曦
 * @version 1.0
 */
public class Homework01 {
    public static void main(String[] args) {
        String str = "abcdef";
        System.out.println(reverse(str, 1, 4));

    }

    public static String reverse(String str, int start, int end) {
        StringBuilder builder = new StringBuilder(str);
        while (start < end) {
            char tmp = builder.charAt(start);
            builder.replace(start, start + 1, "" + builder.charAt(end));
            builder.replace(end, end + 1, "" + tmp);
            start += 1;
            end -= 1;
        }

        return builder.toString();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值