java 简概时间类

本文详细介绍了Java中处理日期和时间的主要类,包括java.util.Date、java.sql.Time、java.sql.Timestamp、java.util.Calendar以及java.text.SimpleDateFormat等。这些类在处理日期时间格式化、解析和操作方面发挥着重要作用。

1.java.util.Date

子类有:java.sql.Date,java.sql.Time,java.sql.Timestamp

指定了一个时间,用毫秒表示,它包含了 年,月,日,时,分,秒.但不支持日期的国际化和分时区显示

calendar类可以用来转换在日期和时间字段,和DateFormat类可以用来转换

时间字符传.


2.java.sql.Time (extends java.util.Date)

它只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD (加了格式化)


3.java.sql.Timestamp (extendsjava.util.Date)

增强的java.util.Date,对秒后面的毫秒...精确。


4.java.util.Calendar

是一个抽象类,提供了常规的日期修改功能和国际化支持,主要对日期操作(包括日期,下周)

实例化 :Calendar c=Calendar.getInstance();

Calendar cal=Calendar.getInstance(); 
Date date=cal.getTime(); 

//Calendar的add()方法 
		SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Calendar cal=Calendar.getInstance(); 
		cal.set(Calendar.YEAR, 2012); 
		cal.set(Calendar.MONTH,3); 
		cal.set(Calendar.DAY_OF_MONTH, 3); 
		cal.add(Calendar.DATE, -4); 
		Date date=cal.getTime(); 
		System.out.println(df.format(date)); 
		cal.add(Calendar.DATE, 4); 
		date=cal.getTime(); 
		System.out.println(df.format(date)); 



5.java.text.SimpleDateFormat (extends java.text.DateFormat)

功能强大的日期时间格式化类

//字符转换时间
		String strDate = "2012-07-07";
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
		Date sDate = sf.parse(strDate);
		
		//时间转换字符
		Date date=new Date(); 
		SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
		String time=df.format(date); 
		System.out.println(time); 


### Java 8 新时间日期API介绍 #### 简介 Java 8 引入了一套全新的时间日期API,在`java.time`包中实现。这套API旨在简化开发者处理时间和日期的方式,提供更加直观和易用的功能[^1]。 #### 主要特性 新的API解决了旧版存在的诸多问题,比如线程安全性和不可变对象的支持。此外,它还提供了更好的国际化支持以及更清晰的API设计[^2]。 #### 基础类概述 - **LocalDate**: 表示不带有时区信息的日历日期(年月日)。可以通过静态方法`.now()`获取当前日期实例。 - **LocalTime**: 只表示一天中的某个时刻而不含具体哪一天的信息。同样地,也可以通过调用`.now()`来创建代表此刻时间的对象。 - **LocalDateTime**: 结合了上述两者功能,既包含了完整的日期又记录下了确切的时间点。对于大多数日常应用来说已经足够用了。 ```java // 获取今天的日期 LocalDate today = LocalDate.now(); System.out.println(today); // 创建特定时间点 LocalTime specificTime = LocalTime.of(14, 30); System.out.println(specificTime); // 组合成带有完整日期和时间的数据结构 LocalDateTime dateTimeNow = LocalDateTime.now(); System.out.println(dateTimeNow); ``` #### 处理时区 为了应对不同地区的实际需求,新API加入了对时区的支持: - **ZonedDateTime**: 它是在`LocalDateTime`基础上增加了时区偏移量的概念,从而能够精确描述全球任意位置的具体时刻。 ```java // 使用默认系统时区获得当前时间戳 ZonedDateTime zonedNow = ZonedDateTime.now(); System.out.println(zonedNow); // 明确指定其他时区并打印相应结果 ZoneId zoneShanghai = ZoneId.of("Asia/Shanghai"); ZonedDateTime shanghaiTime = ZonedDateTime.now(zoneShanghai); System.out.println(shanghaiTime); ``` #### 转换操作 当需要与其他库或遗留代码交互时,可能会涉及到不同类型之间互相转换的情况。这里展示了如何在传统`java.util.Date`与现代`LocalDateTime`间进行互转[^3]。 ```java // 将util.Date转化为LocalDateTime Date utilDate = new Date(); LocalDateTime localDateTimeFromUtil = utilDate.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime(); // 把LocalDateTime变成util.Date LocalDateTime localDateTime = LocalDateTime.now(); Date convertedToDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); ``` #### 计算时间段差异 有时候我们需要知道两个给定日期间的差距,这可以用到`Period`类来进行计算[^4]。 ```java LocalDate startDay = LocalDate.of(2023, Month.JANUARY, 1); LocalDate endDay = LocalDate.now(); Period periodBetweenDates = Period.between(startDay, endDay); System.out.printf("%d years, %d months and %d days%n", periodBetweenDates.getYears(), periodBetweenDates.getMonths(), periodBetweenDates.getDays()); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值