您的位置:首页 > 其它

关于时间的各种操作

2020-01-14 21:48 162 查看

1.Date:

日期字符串格式大小比较
String str1="2015-02-08";
String str2="2015-01-08";
int res=str1.compareTo(str2);
1是大于    0是等于    -1是小于
获取某年第一天日期
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
Date currYearFirst = calendar.getTime();
获取某年最后一天日期
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.roll(Calendar.DAY_OF_YEAR, -1);
Date currYearLast = calendar.getTime();
获取当月首日
方1:
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, 1);
date = c.getTime();
return date;

方2:
public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//获取当前月第一天:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH, 1);//设置为1号,当前日期既为本月第一天
String monthfirst = TimeUtils.sdf.format(c.getTime());
System.out.println("===============nowfirst:" + monthfirst);
获取当月最后一天
方1
//获取当前月最后一天
Calendar ca = Calendar.getInstance();
ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
String monthlast = TimeUtils.sdf.format(ca.getTime());
System.out.println("===============last:" + monthlast);

2.LocalDate

该类的实例是一个不可变对象,只提供简单的日期,不含当天的时间信息,不附带任何与时区相关的信息。

LocalDate date = LocalDate.of(2014, 3, 18);// 2014-03-18
int yeat = date.getYear();// 2014
Month month = date.getMonth();// MARCH
int day = date.getDayOfMonth();// 18
DayOfWeek dow = date.getDayOfWeek();// TUESDAY
int len = date.getlengthOfMonth();// 31
boolean leap = date.isLeapYear();// false
LocalDate date1 = LocalDate.of(2014, 3, 18);// 2014-03-18
LocalDate date2 = date1.withTear(2011);// 2011-03-18
LocalDate date3 = date2.withDayOfMonth(25);// 2011-03-25
LocalDate date4 = date3.with(ChronoField.MONTH_OF_TEAR, 9)// 2011-09-25
LocalDate date1 = LocalDate.of(2014, 3, 18);// 2014-03-18
LocalDate date2 = date1.plusWeeks(1);//  2014-03-25
LocalDate date3 = date2.minusYears(3);// 2011-03-25
LocalDate date4 = date3.plus(6, ChronoUnit.MONTHS);)// 2011-09-25
LocalDate date = LocalDate.now();
int year = date.get(ChronoField.year);
int month = date.get(ChronoField.MONTH_OF_YEAR);
int day = date.get(ChronoField.DAY_OF_MONTH);
增减日/月
LocalDate now = LocalDate.now();
LocalDate minusMonthsAfter = now.minusMonths(8);//操作月
LocalDate minusDaysAfter = now.plusDays(-233);//操作日
String strDay = minusDaysAfter.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));//格式化
获取当月首日
LocalDate today = LocalDate.now();
LocalDate kssj = today.with(TemporalAdjusters.firstDayOfMonth());
String format = kssj.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("获取首日--"+format);
获取当月最后一天
LocalDate today1 = LocalDate.now();
LocalDate kssj1 = today1.with(TemporalAdjusters.lastDayOfMonth());
String format1 = kssj1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("获取最后日--"+format1);

3.LocalTime

表示一天中的时间,可以使用LocalTime:

LocalTime time = LocalTime.of(13, 45, 20);// 12:45:20
int hour = time.getHour();// 13
int minute = time.getMinute();// 45
int second = time.getSecond();// 20

LocalDate date = LocalDate.parse("2014-03-18");
LocalTime time = LocalTime.parse("13:45:20");

4.LocalDateTime

LocalDateTime是LocalDate和LocalTime的合体,同时表示了日期和时间,但是不带有时区信息。

// 2014-03-18T13:45:20
LocalDateTime dt1 = LocalDateTime.of(2014, Month.MARCH, 18, 13, 45, 20);
LocalDateTime dt2 = LocalDateTime.of(date, time);
LocalDateTime dt3 = date.atTime(13, 45, 20);
LocalDateTime dt3 = time.atDate(date);

LocalDate date1 = dt1.toLocalDate();
LocalTime time1 = dt1.toLocalTime();
  • 点赞
  • 收藏
  • 分享
  • 文章举报
平常心ljw 发布了44 篇原创文章 · 获赞 1 · 访问量 782 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: