Java 时间格式

问题描述

掌握 Date、DateFormat、SimpleDateFormat、Calendar、LocalDate 的时间格式及用法

(一)Date

1.基本介绍

(1)含义:当前系统时间(未进行初始化)
(2)时间原点:1970年1月1日8:00:00(进行初始化)(北京时间)
(3)毫秒值:从时间原点到当前时间经历的毫秒
(4)格式:星期 月 日 时:分:秒 时区 年
如:Sat Oct 16 11:31:02 CST 2021

  • 1s=1000ms
  • CST:China Standard Time(中国标准时间)
2.基本用法

(1)导入date包
(2)创建实例化对象,直接打印为当前系统时间
(3)getTime() 获取当前毫秒值
(4)setTime(x)设置距离时间原点x毫秒的时间
(5)after 和 before:判断两个日期的先后顺序

  • date不能进行数学运算,但是毫秒值可以
import java.util.Date;
public class Time {
    public static void main(String[] args){
        Date date =new Date();//创建实例化对象
        System.out.println(date);//当前系统时间
        System.out.println(date.getTime());//当前毫秒值
        Date date0 =new Date(0);//初始化时间
        System.out.println(date0);//时间原点
        date.setTime(15000);//设置距离时间原点15000毫秒(15秒)的时间
        System.out.println(date);
        
        Date date2 =new Date();
        date2.setTime(1500);
        Date date3 =new Date();
        date3.setTime(2500);
        System.out.println(date3.after(date2));
        System.out.println(date3.before(date2));
    }
}

输出结果如下:
在这里插入图片描述

  • date3.after(date2):检验 date3 是否在 date2 之后,是则返回 true
  • date3.before(date2):检验 date3 是否在 date2 之前,是则返回 true

在这里插入图片描述

(二)DateFormat

1.基本介绍

(1)含义:日期格式化
(2)抽象类:不能进行实例化(需要创建子类的对象)
(3)子类继承:SimpleDateFormat

2.SimpleDateFormat

(1)模式字母:y(年) M(月) d(天) H(时) m(分) s(秒)
(2)日期转成字符串:调用父类方法format
(3)字符串转成日期:调用父类方法parse

🔶 format

import java.text.SimpleDateFormat;
import java.util.Date;
public class Time {
    public static void main(String[] args){
        Date date=new Date();
        System.out.println(date);
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
        SimpleDateFormat sdf2=new SimpleDateFormat("yy年MM月DD日HH时mm分ss秒");
        SimpleDateFormat sdf3=new SimpleDateFormat("yyyy月d日H时");
        String format1=sdf1.format(date);
        String format2=sdf2.format(date);
        String format3=sdf3.format(date);
        System.out.println(format1+"\n"+format2+"\n"+format3);
    }
}

输出结果如下:

  • DD日 表示从当前年份算起的天数,dd日 表示从当前月份算起的天数

在这里插入图片描述

🔶parse

  • 日期格式要与输入字符串格式一致
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Time {
    public static void main(String[] args) throws ParseException{
        String time1 ="2021年10月17日";
        String time2 ="2021-10-17";
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy年MM月dd日");
        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
        Date parseDate1=sdf1.parse(time1);
        Date parseDate2=sdf2.parse(time2);
        System.out.println(parseDate1+"\n"+parseDate2);
    }
}

输出结果如下:
在这里插入图片描述

(三)Calendar

1.基本介绍

(1)含义:日历(包括 年 月 日 时 分 秒 星期 字段)
(2)抽象类:不能进行实例化(需要创建子类的对象)
(3)子类继承:GregorianCalendar

2.GregorianCalendar

(1)getinstance方法:获取系统日历
(2)get方法:获取某个字段
(3)set方法:设定日期
(4)getTime方法:将日历对象转化成Date对象
(5)add方法:增加日历字段的偏移量

  • Calendar里的字段都是 int 型
  • Date类的getTime方法得到的是当前时间的毫秒值
import java.util.Calendar;
public class Time {
    public static void main(String[] args){
    
        Calendar cal =Calendar.getInstance();//获取系统日历
        int year =cal.get(Calendar.YEAR);//获取年份
        int month =cal.get(Calendar.MONTH)+1;//获取月份(罗马儒略历中一年中的第一个月是 JANUARY,值为0;最后一个月取决于一年中的月份个数)
        int day =cal.get(Calendar.DAY_OF_MONTH);//获取日
        int hour =cal.get(Calendar.HOUR_OF_DAY);//获取时
        int minute =cal.get(Calendar.MINUTE);//获取分
        int second =cal.get(Calendar.SECOND);//获取秒
        int week =cal.get(Calendar.DAY_OF_WEEK)+1;//获取星期(一周从周日开始)
        int weeks =cal.get(Calendar.WEEK_OF_YEAR);//获取第几周
        System.out.println(year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒"+"星期"+week+"第"+weeks+"周");


        cal.set(Calendar.YEAR,2002);//设置年份为2002年
        cal.set(Calendar.MONTH,8);//设置月份为9月
        cal.set(Calendar.DAY_OF_MONTH,12);//设置日子是12号
        System.out.println(cal.getTime());//将日历对象转化为date对象
        cal.set(2002, 3, 16, 13, 28,21);//设置时间为2002年4月16日13时28分21秒
        
        System.out.println(cal.getTime());
        cal.add(Calendar.YEAR,1);//年份向后偏移1年(与设置的日期相比较)
        cal.add(Calendar.MONTH,1);//月份向后偏移1月
        cal.add(Calendar.DAY_OF_MONTH,1);//日子向后偏移1天
        System.out.println(cal.getTime());//将日历对象转化为date对象

    }
}

输出结果如下:
在这里插入图片描述

(四)LocalDate

1.基本介绍

(1)含义:本地日期
(2)字段:年 月 日

  • LocalDate不包含时间,LocalTime不包含日期
2.基本用法

(1)now:获取系统日期
(2)of:自定义设置日期
(3)get:获取日期字段
(4)with:设置日期字段
(5)plus:设置日期字段向后偏移量
(6)minus:设置日期字段向前偏移量

import java.time.LocalDate;
public class Time {
    public static void main(String[] args){
        LocalDate ld_now = LocalDate.now();//获取系统日期
        System.out.println(ld_now);
        LocalDate ld_of = LocalDate.of(2002,9,12);//自定义设置日期
        System.out.println(ld_of);

        LocalDate ld = LocalDate.now();
        int year =ld.getYear();//获取系统年份
        int month =ld.getMonthValue();//获取系统月份
        int day =ld.getDayOfMonth();//获取系统日
        System.out.println(year+"年"+month+"月"+day+"日");

        LocalDate newLocal =ld.withYear(2023).withMonth(2).withDayOfMonth(15);//设置日期字段为2023年2月15日
        System.out.println(newLocal);

        LocalDate plusLocal =ld.plusYears(1).plusMonths(2).plusDays(3);//设置日期字段向后偏移1年2月3天
        LocalDate minusLocal =ld.minusYears(1).minusMonths(2).minusDays(3);//设置日期字段向前偏移1年2月3天
        System.out.println(plusLocal+"\n"+minusLocal);

    }
}

输出结果如下:
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值