JAVA开发之日期获取和处理


一、日期的获取

1.java.util.Date

最简单的获取日期的方法,通过实例化Date类,来获取时间。

        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(formatter.format(date));

输出日期格式:

2022-09-02 09:45:41

2.System.currentTimeMillis()

返回当前系统的时间戳,不受时区的影响。

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(formatter.format(new Date(System.currentTimeMillis())));

返回日期格式:

2022-09-02 09:53:59

3.java.util.Calendar

通过实例化Calendar类获取时间

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar caldate = Calendar.getInstance();
        System.out.println(formatter.format(caldate.getTime()));

返回日期格式

2022-09-02 09:56:31

4.Locale相关API(java8新增)

1.LocalDate 表示一个本地的日期,而不包含时间部分(没有时区信息),返回标准日期格式(只有日期)

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

返回时间类型

2022-09-02

2.LocalTime.now() 返回标准时间格式(只有时间)

System.out.println(LocalTime.now());

返回时间类型

10:02:22.650142400

3.LocalDateTime.now() 返回标准日期+时间

LocalDateTime local = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss");
System.out.println(formatter.format(local));

返回时间类型

2022-02-09 10:09:50

二、日期操作

1.日期格式化

SimpleDataFormat与DataTimeFormatter
SimpleDataFormat不能轻易作为全局变量在多线程环境下使用,它是线程不安全的.
DataTimeFormatter 是java8新功能,是线程安全的,推荐使用。

        LocalDateTime local = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss");
        String date = formatter.format(local);

        SimpleDateFormat format = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss");
        String date2 = formatter.format(local);

        System.out.println(date);
        System.out.println(date2);

二者返回的日期格式是一样的:

2022-02-09 14:12:04
2022-02-09 14:12:04

2.日期加减

1.使用Calendar类处理:
Calendar类支持设置某一日期,并对此日期进行加减处理。
加减处理的时候需要注意:月份在Calendar中是0-11,因此设置日期时需要-1
Calendar的roll方法可以对指定的年月日进行加减操作

int year = 2008;
int month = 8;
int day = 8;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,month-1);//月份-1
calendar.set(Calendar.DAY_OF_MONTH,day);
calendar.roll(Calendar.YEAR,-1);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String date = format.format(calendar.getTime());
System.out.println(date);

输出日期:

2007-08-08

3.天数计算

1.使用Date获取时间

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate = format.parse("2008-08-08");
Date endDate = format.parse("2022-08-08");
long day =(endDate.getTime()-beginDate.getTime())/(24*60*60*1000);
System.out.println("相隔的天数="+day);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值