关于时间的理解与使用

本文介绍了Java中Date对象的创建、常用方法,SimpleDateFormat的使用以及格式化和解析日期。同时涵盖了Calendar类和JDK8新增的LocalDate,LocalTime,Instant等日期时间API的用法。
摘要由CSDN通过智能技术生成

时间与日期

Date

Data的构造器
名称说明
public Date()

创建一个Date对象,代表的是系统当前此刻日期时间

Date的常用方法
名称说明
public long getTime()获取事件对象的毫秒值

时间毫秒值->对象

构造器说明
public Date(long time)吧时间毫秒值转换成Date日期对象
Date方法说明
public void setTime(long time)设置日期对象的时间为当前时间毫秒值对应时间

SimpleDateFormat

将Date对象或者时间毫秒值格式化成常规的时间  /  将常规时间转换成字符串对象

SimpleDateFormat的构造器
构造器说明
public SimpleDateFormat()构造一个SimpleDateFormat,默认格式
public SImpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式
SimpleDateFormat的格式化方法
格式化方法说明
public final String Format(Date date)将日期格式化成日期 / 时间字符串
public final String Format(Object time)将时间毫秒值格式化成日期 / 时间字符串

案例1

    public static void main(String[] args) {
//        1:创建一个Date类,代表系统此刻日期时间对象
        Date d=new Date();
//        System.out.println(d);
//        System.out.println(d.getTime());
//        2.格式化这个日期对象
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a"); 
//        EE表示周几  a表示上午/下午
//        3.开始格式化日期对象成为喜欢的格式
        String rs= sdf.format(d);
        System.out.println(rs);
    }
解析方法说明
public Date parse(String source)从给定字符串的开始解析文本以生成日期

案例2

    public static void main(String[] args) throws ParseException {
        //使用字符串来拿取时间
        String dateStr="2021年08月06日 11:11:11";

//        将字符串时间解析成日期对象:形式必须与被解析的时间形式完全一致,否则无法解析
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        Date d = sdf.parse(dateStr);

//        时间往前推2天14小时 49分06秒  L的作用是防止数字过大
        long time = d.getTime()+(2L*24*60*60 + 14*60*60 + 49*60 + 6) * 1000;
        System.out.println(sdf.format(time));
    }

Date a=new Date()

Date b=new Date();

a.after(b)  //表示a在b的后面

a.before(b)  // 表示a在b的前面

Calendar 日历

  • 代表了系统此刻的日期对应的日历对象
  • 是一个抽象类,不能直接创建
方法名说明
public int get (int field)获取日期中的某个字段信息
public void set(int field,int value)修改日历的某个字段信息
public void add(int field,int amount)为某字段增加/减少指定的值
public final Date getTime()拿到此刻日期对象
public long getTimeInMillis()拿到此刻事件毫秒值

案例3

    public static void main(String[] args) {
//        拿到系统此刻日历对象(当日的所有信息)
        Calendar cal=Calendar.getInstance();
//        public int get (int field)
//        获取日历的信息,年
        int year=cal.get(Calendar.YEAR);
//        public void set(int field,int value)
//        修改日历的信息,修改小时为12
        cal.set(Calendar.HOUR,12);
//        public void add(int field,int amount)
//        为某字段增加/减少指定的值.增加64天
        cal.add(Calendar.DAY_OF_YEAR,64);
//        public final Date getTime()
//        拿到此刻日期对象
        cal.getTime();
//        public long getTimeInMillis()
//        拿到此刻时间毫秒值
        cal.getTimeInMillis();
    }

JDK8 新增 java.time包提供了新的日期和时间API

  • LocalDate:不包含具体时间
  • LocalTime:不包含日期的时间
  • LocalDateTime:包含了日期及时间
  • Instant:代表的是事件戳
  • DateTimeFormatter:用于做事件格式化的解析
  • Duration:用于计算两个时间的间隔
  • Period:用于计算两个日期的间隔
LocalDate nowDate=LocalDate.now(); //今天的日期nowDate
int year = nowDate.getYear(); //年
int month=nowDate.getMonthValue(); //月
int day=nowDate.getDayOfYear();//日
int dayOfYear=nowDate.getDayOfYear();//获取当年的第几天
int WeekEnglish=nowDate.getDayOfWeek();//获取第周几英文
int WeekChine=nowDate.getDayOfWeek().getValue();//获取数字的第周几


LocalTime nowTime=LocalTime.now();//获取本地时间
int hour=nowTime.getHour();//时
int minute=nowTime.getMinute();//分
int second=nowTime.getSecond();//秒
int nano=nowTime.getNano();//纳秒

nowTime.minusHours(1);//一小时前
nowTime.minusMinutes(1);//一分钟前

nowTime.plusHours(1);//一小时后
nowTime.plusMinutes(1);//一分钟后

2018-09-06.isBefore(nowDate);//判断该时间是否在系统时间之前
2018-09-06.isAfter(nowDate);//判断该时间是否在系统时间之后

LocalDate myDate=LocalDate.of(2018,9,5);//myDate中输入时间2018-09-05

判断今天是否是生日

JDK8获取时间更简单

//方法1
Instant instant = Instant.now();//当前时间
Date date=Date.from(instant); //当前时间是
instant.atZone(ZoneId.systemDefault());//默认上海时间

Date和instant 的相互转换

Date date=Date.from(instant); //instant装换为Date
Instant i2=date.toInstatn();//Date装换为instant 相差8小时

日期比较Duration 时间间隔  : Period日期间隔

LocalDateTime birthDate=LocalDateTime.of(2021,03,14,20,00,00)//导入时间
Duratime duration = Duration.between(birthDate,today);//第二个参数减第一个参数
duration.toDays();//两个时间天数差
duration.toHours();//两个时间小时差

ChronoUnit类用于单位内测一段时间

数据的类型及转换

Do

uble.valueOf(String) ;//将字符串转换成数字  其他以此类推

数据类型的全称,加大容错率
基本数据类型 引用数据类型
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值