常见的系统类--日期、格式化

常见的系统类(日期、格式化)

java.util包是Java内置的一个工具包,其中包含 collection 框架、日期和时间和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。不会默认导入,如果需要使用声明语句: import java.util.*

1 System类

//获取当前系统时间,返回一毫秒为单位的时间
	long time = System.currentTimeMillis();
	System.out.println(time);		
//结果:1571015295389

2 Date类

类 Date 表示特定的瞬间,可到毫秒。

//创建Date对象,表示特定的瞬间
	Date date = new Date(time);
	System.out.println(date);	
	//结果:Mon Oct 14 09:08:15 CST 2019
//方法已过时
	System.out.println(date.getYear());

getTime();可以用来获取date对象的毫秒数
Date 中这些函数的 API 不易于实现国际化,大多数方法都已废弃。 从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换。使用 DateFormat 类来格式化(日期==》文本)和解析(文本==》日期)日期字符串。

3 DateFormat 类

DateFormat 是日期/时间格式化子类的抽象类,不能实例化。只能继承或者通过类名调用静态方法。
要格式化一个当前语言环境下的日期,可使用某个静态工厂方法:

	// 获取当时时间
		Date date = new Date();
		
		System.out.println(date);
		// 千年虫BUG事件
//		System.out.println(date.getYear());
//		System.out.println(date.getMonth() + 1);
//		System.out.println(date.getDate());
		// Date对象提供获取时间的常见方法全都已经过时了,因此不建议大家这样使用了
		
		// 获取当前时间的时间戳, 1970-01-01 00:00:00 距离当前的毫秒数
//		System.out.println(date.getTime());
		
		// java还可以通过System类获取时间戳,可以获取当前时间戳
//		System.out.println(System.currentTimeMillis());
		
		// 日期对象 --->  字符串  格式化时间
//		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
		String format = sdf.format(date);
		System.out.println(format);
		
		// 字符串 ---> 日期对象		
		String strTime = "2018年10月8日 12:12:12";
		DateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		Date date2 = sdf2.parse(strTime);
		System.out.println(date2);
		

结果运行如下:
在这里插入图片描述

4 Calendar类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

Calendar calendar = Calendar.getInstance(); 
		
		int year = calendar.get(Calendar.YEAR);
		int month = calendar.get(Calendar.MONTH) + 1;
		int day = calendar.get(Calendar.DATE);
		int hour = calendar.get(Calendar.HOUR);
		int minute = calendar.get(Calendar.MINUTE);
		int s = calendar.get(Calendar.SECOND);
		System.out.println(year +"-"+ month +"-"+ day + " "+ hour +":"+ minute +":"+s);

运行结果如下:
在这里插入图片描述

5 BigDecimal类

用于高精度行业: 航天、经济、银行、金融

// 计算机中的浮点数,并不像整数那样存储,事用过一种算法得到
        // 这样的如果我们使用浮点数计算时,可能得到事一个相似值
        System.out.println(0.1 + 0.2);


        // 高精度行业: 航天、经济、银行、金融
        BigDecimal bigDecimal = new BigDecimal(0.1);
        BigDecimal bigDecima2 = new BigDecimal(0.2);

        BigDecimal add = bigDecimal.add(bigDecima2);
        System.out.println(add);

运行结果如下:在这里插入图片描述

JDK8DateTime

Date类
格式化时间日期的对象
SimpleDateFormat

在jdk8之后,系统不再推荐使用这些类
如上的的日期和时间处理类都是非线程安全类,在早期没有高并发的情况可以正常使用。
高并发的情况下,使用这些类,都会出现非线程安全问题!!!!

JDK8新的时间API

  		//本地日期
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);
        System.out.println(localDate.getDayOfMonth());
        System.out.println(localDate.getDayOfYear());

        //本地时间
        LocalTime localTime = LocalTime.now();
        System.out.println(localTime);

        //日期+时间的对象
        LocalDateTime dateTime = LocalDateTime.now();
        System.out.println(dateTime);

        //专门用来格式化日期时间的对象
        String str = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println(str);

        //将日期字符串解析为日期对象
        LocalDateTime ldt = LocalDateTime.parse("2000年03月08日 14:52:18",DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"));
        System.out.println(ldt);

        Instant instant = Instant.now();
        System.out.println(instant);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值