Java日期类

  • java.util.Date类封装当前的日期和时间 大部分方法都已经过时

第一代日期类Date

属性说明
long getTime();获取当前时间,时间戳
void setTime(long time);设置时间
boolean after(Date when)测试此日期是否晚于指定日期。
boolean before(Date when)测试此日期是否早于指定日期。
public class DateTest2 {
    public static void main(String[] args) {
        //gettime 获取当前系统毫秒时间 (时间戳)
        Date d = new Date();
        System.out.println(d.getTime());

        //获取今天时间 此方法已过时
        System.out.println(d.toLocaleString());

        //获取昨天时间
        Date d2 = new Date(d.getTime()-(60*60*24*1000));
        System.out.println(d2.toLocaleString());

        //比较今天是否晚于昨天
        boolean after = d.after(d2);
        System.out.println(after);

        //比较今天是否早于昨天
        boolean before = d.before(d2);
        System.out.println(before);
        
    }
}

SimpleDateFormat类

属性说明
format将一个Date格式转化为日期/时间字符串,此方法继承的父类DateFormat的方法
parse从给定字符串的开始解析文本,以生成一个日期,此方法为继承的父类DateFormat的方法
  • java.text.DateFormat类是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间
public class DateTest3 {
    public static void main(String[] args) throws ParseException {
        //创建日期
        Date date = new Date();

        //对日期进行格式化
        //格式:yyyy-MM.dd HH:mm:ss SSS
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");

        System.out.println(sdf.format(date));


        //字符串转换为时间
        String str = "2001-10-17 10:17:15 888";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date parse = sdf1.parse(str);
        System.out.println(parse);
        
    }
}

第二代日期类Calendar

  • Date类用于返回日期对象,不适合获取日历字段。设置和获取日历字段的方法,被JDK1.1推出的Calendar代替。
属性说明
getInstance()使用默认时区和语言环境获得一个日历,也可以通过getInstance(TimeZone time,Locale loc)或指定时区和语言环境的日历
get(int field)获取指定日历字段
set(int year,int month,int date,int hourOfDay,int minute,int second)设置字段YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE和SECOND的值
public class DateTest4 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();

        int Year = calendar.get(Calendar.YEAR);  //年
        int Month = calendar.get(Calendar.MONTH)+1; //1月从0开始 月
        int DayMonth = calendar.get(Calendar.DAY_OF_MONTH); //日
        int Hour = calendar.get((Calendar.HOUR)); //时
        int Minute = calendar.get(Calendar.MINUTE); //分
        int Second = calendar.get(Calendar.SECOND); //秒

        System.out.println(Year + "-" + Month + "-" + DayMonth + "\t" + Hour + ":" + Minute + ":" + Second); // 2023-3-4   5:36:52
    }
}
public class DateTest5 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();

        //获取今年的多少天
        int DayYear = calendar.get(Calendar.DAY_OF_YEAR); //63


        //获取这个月的多少天
        int DayMonth = calendar.get(Calendar.DAY_OF_MONTH); //4

        //获取这一周的第几天 自然周从周日开始默认是0
        int DayWeek = calendar.get(Calendar.DAY_OF_WEEK); //7
        
        System.out.println("今年已经过去了" + DayYear + "天 这个月已经过去了" + DayMonth + "天 这一周已经过去了" + DayWeek + "天");

    }
}

第三代日期类

  • JDK 1.0中包含了一个java.util.Date类
  • JDK 1.1引入Calendar类之后被弃用了
  • JDK1.8引用的java.time纠正了过去的缺陷

LocalDateTime类

属性说明
LocalDate now()返回日期
int getYear()返回年份
int getMonthValue()返回月份
int getDayOfMonth()返回日期
int getHour()返回小时
int getMinute()返回分钟
int getSecond()返回秒
public class DateTest6 {
    public static void main(String[] args)  {
        //获取日期
        LocalDateTime time = LocalDateTime.now();
        System.out.println(time); // 2023-03-04T20:13:42.175

        //年
        int Year = time.getYear();

        //月
        int Month = time.getMonthValue();

        //日
        int dayOfMonth = time.getDayOfMonth();

        //时
        int hour = time.getHour();

        //小时
        int minute = time.getMinute();

        //分钟
        int second = time.getSecond();

        System.out.println(Year + "年 " +  Month  + "月 " + dayOfMonth + "日 " + hour + "时 " +  minute + "分 " + second + "秒 ");
        //2023年 3月 4日 20时 27分 14秒 
    }
}

DateTimeFormatter类

  • DateTimeFormatter可以格式化LocalDate、LocalTime、LocalDateTime及Instant类
属性说明
static DateTimeFormatter ofPattern(String pattern)静态方法,返回一个DateTimeFormatter对象
String format(TemporalAccessor t)格式化一个日期、时间,返回字符串
TemporalAccessor parse(CharSequence text)将指定格式的字符序列解析为一个日期、时间
public class DateTest7 {
    public static void main(String[] args) {

        //获取当前时间
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime); //2023-03-04T20:31:57.261

        //把日期对象解析成LocalDateTime对象
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        //格式化日期
        String format = dtf.format(localDateTime);

        System.out.println(format);  //2023-03-04 08小时03分钟57秒

        //字符串转换为日期
        String sy = "2001-10-17 15:30:05";
        
        TemporalAccessor parse = dtf.parse(sy);
        System.out.println(parse); //{},ISO resolved to 2001-10-17T15:30:05

    }
}
最后修改:2023 年 03 月 29 日
如果觉得我的文章对你有用,请随意赞赏