0
点赞
收藏
分享

微信扫一扫

Java8新的时间工具测试

独孤凌雪 2023-08-06 阅读 49
javaspring

java8新的时间工具测试

java8引入了一套全新的时间日期API,本篇随笔将说明学习java8的这套API。

java。time包中的是类是不可变且线程安全的。新的时间及日期API位于java.time中,下面是一些关键类

  • Instant——它代表的是时间戳

  • LocalDate——不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。

  • LocalTime——它代表的是不含日期的时间

  • LocalDateTime——它包含了日期及时间,不过还是没有偏移信息或者说时区。

  • ZonedDateTime——这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的。

package java8chaptertwelfth;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;

/**
 * 描述:java8时间测试
 * Created by zjw on 2017/9/5.
 */
public class Java8DateTest {

	public static void main(String[] args) throws Exception {
		System.out.println("当前日期" + LocalDateTime.now());
		System.out.println("当前时间去除T和毫秒数" + LocalDateTime.now().withNano(0).toString().replaceAll("T", " "));
		System.out.println("创建时间" + LocalDate.of(2014, 12, 25));
		System.out.println("根据自定义格式创建时间" + LocalDate.parse("14-2-20", DateTimeFormatter.ofPattern("yy-M-d")));
		System.out.println("创建固定格式时间" + LocalDate.parse("2014-02-28"));
		LocalDate today = LocalDate.now();
		System.out.println("当前日期" + today);
		System.out.println("本月的第一天" + today.with(TemporalAdjusters.firstDayOfMonth()));
		System.out.println("本月的第二天" + today.withDayOfMonth(2));
		LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());
		System.out.println("本月的最后一天" + lastDayOfThisMonth);
		System.out.println("本年的最后一天" + today.with(TemporalAdjusters.lastDayOfYear()));
		System.out.println("本月最后一天再后一天的日期" + lastDayOfThisMonth.plusDays(1));
		// 取2015年1月最后一个周一的日期,这个计算用Calendar要死掉很多脑细胞:
		System.out.println(LocalDate.parse("2015-01-01").with(TemporalAdjusters.lastInMonth(DayOfWeek.MONDAY)));
		LocalTime t1 = LocalTime.of(9, 50, 12);
		LocalTime t2 = LocalTime.parse("23:58:59.675", DateTimeFormatter.ISO_LOCAL_TIME);
		System.out.println("自定义time" + t1);
		System.out.println("根据字符串自定义生成时间带毫秒数" + t2);

		LocalDate date1 = LocalDate.of(2014, 3, 18);
		System.out.println(date1);
		LocalDate date2 = date1.withYear(2011);
		System.out.println(date2);
		LocalDate date3 = date2.withDayOfMonth(25);
		System.out.println(date3);
		LocalDate date4 = date3.with(ChronoField.YEAR_OF_ERA, 2017);
		System.out.println(date4);
		System.out.println(date4.plus(1L, ChronoUnit.MONTHS));

		LocalDate date = LocalDate.of(2014, 3, 18);
		date = date.with(ChronoField.MONTH_OF_YEAR, 10);
		date = date.plusYears(3).plusDays(12);
		date.withYear(2011);
		System.out.println(date);
		System.out.println("本月的第三个周日的日期" + date.with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.SUNDAY)));
		System.out.println("本月的第一个周日" + date.with(TemporalAdjusters.firstInMonth(DayOfWeek.SUNDAY)));
        
		String authors = String.join(", ","Jarvan","Medusa");
		System.out.println(authors);

		LocalDate localDate = LocalDate.of(2014, 3, 18);
		localDate = localDate.with(ChronoField.MONTH_OF_YEAR, 10);
		localDate = localDate.plusYears(3).plusDays(12);
		localDate.withYear(2011);
		System.out.println(localDate);
		System.out.println("本月的第三个周日的日期" + localDate.with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.SUNDAY)));
		System.out.println("本月的第一个周日" + localDate.with(TemporalAdjusters.firstInMonth(DayOfWeek.SUNDAY)));
		System.out.println(LocalDate.of(2017, 10, 3).with(TemporalAdjusters.previousOrSame(DayOfWeek.TUESDAY)));

		LocalDate now = LocalDate.now();
		System.out.println("格式化" + now.format(DateTimeFormatter.ISO_LOCAL_DATE) + "\n");

		System.out.println("明天的日期" + LocalDate.now().with(temporal -> {
			DayOfWeek dow = DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));
			int dayToAdd = 1;
			if (dow == DayOfWeek.FRIDAY)
				dayToAdd = 3;
			else if (dow == DayOfWeek.SATURDAY)
				dayToAdd = 2;
			return temporal.plus(dayToAdd, ChronoUnit.DAYS);
		}));
        // Date date = new Date();
		// Instant instant1 = date.toInstant();
		// System.out.println("Date获取今天是几号:" + date.getDate());
		//
		// Calendar calendar = Calendar.getInstance();
		// System.out.println("Calendar获取今天是几号:" + calendar.get(Calendar.DATE));
		//
		// Instant instant = Instant.now();
		// System.out.println("instant当前时间带毫秒:" + instant);
		//
		// LocalDate localDate = LocalDate.now();
		// System.out.println("当前日期:" + LocalDate.now());
		// System.out.println("LocalTime当前时间带毫秒:" + LocalTime.now());
		// System.out.println("当前日期加时间:" + LocalDateTime.now());
		// System.out.println("当前时间去除T和毫秒数:" + LocalDateTime.now().withNano(0).toString().replaceAll("T", " "));
		// System.out.println("创建时间:" + LocalDate.of(2014, 12, 25));
		// System.out.println("根据自定义格式创建时间:" + LocalDate.parse("14-2-20", DateTimeFormatter.ofPattern("yy-M-d")));
		// System.out.println("创建固定格式时间:" + LocalDate.parse("2014-02-28"));
		// LocalDate today = LocalDate.now();
		// System.out.println("当前日期:" + today);
		// System.out.println("当前年是否是闰年:" + localDate.isLeapYear());
		// System.out.println("本月的第一天:" + today.with(TemporalAdjusters.firstDayOfMonth()));
		// System.out.println("本月的第二天:" + today.withDayOfMonth(2));
		// LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());
		// System.out.println("本月的最后一天:" + lastDayOfThisMonth);
		// System.out.println("本年的最后一天:" + today.with(TemporalAdjusters.lastDayOfYear()));
		// System.out.println("本月最后一天再后一天的日期:" + lastDayOfThisMonth.plusDays(1));
		// // 取2015年1月最后一个周一的日期,这个计算用Calendar要死掉很多脑细胞:
		// System.out.println("2015年1月最后一个周一的日期:" + LocalDate.parse("2015-01-01").with(TemporalAdjusters.lastInMonth(DayOfWeek.MONDAY)));
		// LocalTime t1 = LocalTime.of(9, 50, 12);
		// LocalTime t2 = LocalTime.parse("23:58:59.675", DateTimeFormatter.ISO_LOCAL_TIME);
		// System.out.println("自定义time:" + t1);
		// System.out.println("根据字符串自定义生成时间带毫秒数:" + t2);
	}

}
举报

相关推荐

0 条评论