java中的时间操作

1、date

该类表示时间:

Date date = new Date()			//当前时间
Date d2 = new Date(3600*1000)	//1970年1月1日1点-从时间原点(1970年1月1日0点0分0秒)开始一个小时

date.setTime()			//设置时间
date.getTime()			//获取时间毫秒值
date.after(d2)			//判断date是否在d2之后
date.before(d2)			//判断date是否在d2之前
date.compareTo(d2)		//时间相同返回0,不相同分别返回1和-1
date.equals(d2)			//比较两个时间是否相同

2、SimpleDateFormat

用于格式化时间:

SimpleDateFormat sdf = new SimpleDateFormat()	// 默认格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss")	//指定格式	
		// (y年	M月	d日	H时	m分	s秒)
String date = sdf.format(new Date());		//根据格式格式化当前时间返回字符串
Date d = sdf.parse(date);					//解析时间,格式需要保持一致      

3、Calendar

表示日历:

Calendar c = Calendar.getInstance();	//获取当前时间日历对象
c.getTime()				// 获取日期对象
c.setTime()				//设置日历对象
c.getTimeInMillis()		//获取日期毫秒值
c.setTimeInMillis()		//通过毫秒值设置日期
c.get(1)					//获取日期数组中的数据(月份为0-11)
	// (0纪元 1年 2月 5日)可用calendar中的常量
c.set(1,2050)				//把年修改为2050
c.add(1,-10)						//日期计算,增加或减小,减少10年

4、 ZoneId

时区:

//获取所有时区名称,中国使用(Asia/shanghai)
Set<String> availableZoneIds = ZoneId.getAvailableZoneIds();	

// 获取系统默认时区
ZoneId defaultZoneId = ZoneId.systemDefault();


//获取指定时区对象
ZoneId shanghai = ZoneId.of("Asia/Shanghai");

5、Instance

时间戳:

Instance.now()			//获取当前标准时间时间戳
// 获取指定时间的时间戳对象
Instant ofEpochMilli = Instant.ofEpochMilli(1000L);
Instant ofEpochSecond = Instant.ofEpochSecond(1000L);

//获取指定时区时间戳
ZonedDateTime now = Instant.now().atZone(shanghai);

// 比较两个时间先后
Instant now = Instant.now();
Instant yuandian = Instant.ofEpochMilli(0L);
//now是否在yuandian之前
boolean isafter = now.isAfter(yuandian);
//now是否在yuandian之后
boolean isbefore = now.isBefore(yuandian);
//now是否和yaundian相等
now.equals(yuandian)

// 时间计算
Instant minus = now.minus(1, ChronoUnit.YEARS);//-1年
Instant plus = now.plus(1,ChronoUnit.YEARS);//+1年

6、ZonedDateTime

带时区的时间:

// 获取当前带时区的时间
ZonedDateTime now = ZonedDateTime.now();
//获取指定带时区的时间,也可通过重载方法直接指定年月日时分秒时区获取
ZonedDateTime.of(LocalDateTime.now(), ZoneId.of("Asia/Shanghai"));

// 修改
now.withYear(2000);
now.withMonth(5);
// 减少
ZonedDateTime minus = now.minus(1, ChronoUnit.YEARS);//-1年
//增加
ZonedDateTimeplus = now.plus(1,ChronoUnit.YEARS);//+1年
ZonedDateTime.from()				//转换父接口类型为ZonedDateTime类型

7、DateTimeFormatter

ZonedDateTime now = ZonedDateTime.now();
//XXX表示时区
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss XXX");
String date = dtf.format(now); // 格式化时包含时区信息
TemporalAccessor accessor = dtf.parse(date); // 解析包含时区信息的日期时间字符串
// 将 TemporalAccessor 转换为 ZonedDateTime
ZonedDateTime zonedDateTime = ZonedDateTime.from(accessor);

8. LocalDate,LocalTime,LocalDateTime

分别表示:日期,时间,日期时间,很多操作方法类似

//获取当前日期时间,日期,时间
LocalDateTime now = LocalDateTime.now();
LocalDate nowDate = LocalDate.now();
LocalTime nowTime = LocalTime.now();
// 获取时间日期类
now.getYear();
now.getMonth();
now.getDayOfMonth();

//计算
now.minusYears(1);
now.plusYears(1);

// 转换
LocalDate date = now.toLocalDate();
LocalTime localTime = now.toLocalTime();

//判断时间日期
now.isAfter(now)
now.isBefore(now)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值