Java日期

Date

1.创建一个当前时间表示UTC 时间的日期类 ;UTC时间是:从 1970 年 1 月 1 日 00:00:00 GMT以来的指定毫秒数。

Date d = new Date();

2.Date 对象使用SimpleDateFormat格式化日期, yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。

//默认系统时区
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将转换格式 变为东九区(东京)时间,比北京早一个小时
sdf .setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
String date = sdf.format(d);

Calendar 日历

1.创建一个当前时间的日期Calendar对象

//根据系统当前时间创建
Calendar c= Calendar.getInstance();
// 指定时间创建,参数依次为:年,月,日,时,分,秒,月份需要减一
Calendar calendar = new GregorianCalendar(2016, 8, 1, 15, 41, 22);
//根据不同的时区获取不同的时间,“America/Los_Angeles”-美国洛杉矶时区;"Europe/Rome"-罗马时区 东1区
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));    //获取东八区时间

// 获得年份
int year = c.get(Calendar.YEAR);
// 获得月份 需要加上 1
int month = c.get(Calendar.MONTH)+1;
// 获得日期
int day = c.get(Calendar.DATE);
// 获得小时
int hour = c.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c.get(Calendar.MINUTE);
// 获得秒
int second = c.get(Calendar.SECOND);
// 获得星期几:1代表星期日、2代表星期1、3代表星期二,以此类推)
int week = c.get(Calendar.DAY_OF_WEEK);

2.Calendar 对象的用法

  1. Date和Calendar 对象相互转换
//Date 对象转为Calendar
c.setTime(new Date());
//Calendar转为Date对象 
Date date = Calendar.getInstance().getTime();
  1. 获取当前月份的最大天数
Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);
  1. 对日期进行操作。即日期加减:年月日以及小时分秒等。
//把c对象的日期加上10,也就是c也就表示为10天后的日期,其它所有的数值会被重新计算
c.add(Calendar.DATE, 10);
//把c对象的日期减去10,也就是c也就表示为10天前的日期,其它所有的数值会被重新计算
c.add(Calendar.DATE, -10);
  1. 两个日期相差天数
long millisOfDay = 24 * 60 * 60 * 1000;
Calendar calendar = new GregorianCalendar(2015, 9, 1);
Calendar calendar1 = new GregorianCalendar(2016, 9, 1);
Calendar calendar2 = new GregorianCalendar(2017, 9, 1);
// 2016年是闰年,得到366天
 (calendar1.getTimeInMillis() - calendar.getTimeInMillis()) / millisOfDay;
// 2017年是平年,得到365天
(calendar2.getTimeInMillis() - calendar1.getTimeInMillis()) / millisOfDay;

LocalDate,LocalTime ,LocalDateTime

这几个时间处理类 是Java 1.8 之后才有的新的日期类型, LocalDate代表日期,LocalTime代表时间 ,LocalDateTime 两者都有


//从默认时区的系统时钟中获取当前日期。
LocalDate today = LocalDate.now();
// 根据年月日取日期。月份不需要加 1 
LocalDate today2 = LocalDate.of(2020,5,20);
//根据字符串取
LocalDate today3 = LocalDate.parse("2020-06-25");

//获取时间
LocalTime time= LocalTime.now();

//根据LocalDate,LocalTime  ,获取日期时间
LocalDateTime localDateTime = LocalDateTime.of(today ,time);
//使用静态方法生成此对象
LocalDateTime localDateTime2 = LocalDateTime.now();
//通过	DateTimeFormatter 格式化 LocalDateTime 时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss");
localDateTime2.format(formatter);

//获取年,月,日,星期几:1对应星期1
today.getYear();
today.getMonthValue();
today.getDayOfMonth();
today.getDayOfWeek().getValue();
// 取本月第1天
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); 
//取本月第2天,依此类推
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2);
// 取本月最后一天
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());
//取下一天
LocalDate firstDayOfNextMonth = today.plusDays(1);
//取明年
LocalDate firstYearOfNextMonth = today.plusYears(1);
//取下个月
LocalDate firstMonthOfNextMonth = today3.plusMonths(1);
//取某年中第几天的日期
LocalDate l = LocalDate.ofYearDay(2020, 32);
//获取当前时间月份第一个周一是那一天
LocalDate firstWeekMonday = today3.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
  1. LocalDateTime 与 Date 的相互转化
// Date 转化成 LocalDateTime
public static LocalDateTime dateToLocalDate(Date date) {
	Instant instant = date.toInstant();
	ZoneId zoneId = ZoneId.systemDefault();
	return instant.atZone(zoneId).toLocalDateTime();
}
// LocalDateTime 转化成 Date
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
	ZoneId zoneId = ZoneId.systemDefault();
	ZonedDateTime zdt = localDateTime.atZone(zoneId);
	return Date.from(zdt.toInstant());
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值