返回

提问 添加收藏

java 8 时间api 使用

翱翔fly 发布于 2017年11月08日 (共有2个回帖)

java 8 提供的 时间api java.time 比原来的Calendar 方便很多。主要提供了
日期类:LocalDate
时间类:LocateDateTime
时间戳操作类:Instant
时间持续时间计算:Duration
时区:ZoneId
日期间隔:Period
java 8 api 是整合了原第三方工具(org.joda.time),使用将会更加方便。

以下实例针对,日常使用的时间计算方式,进行实例验证。可以根据自己需要提取,时间工具类。
以下是具体的使用实例,建议大家都转换新的时间方式,虽然中间可能要花费些时间,但个人感觉还是值得。

public static void main(String[] args) {
		Instant first = Instant.now();
		// Current Time
		LocalTime time = LocalTime.now();
		System.out.println("Current Time=" + time);
		// Creating LocalTime by providing input arguments
		LocalTime specificTime = LocalTime.of(12, 20, 25, 40);
		System.out.println("Specific Time of Day=" + specificTime);
		// Try creating time by providing invalid inputs
		// Current date in "Asia/Kolkata", you can get it from ZoneId javadoc
		LocalTime timeKolkata = LocalTime.now(ZoneId.of("Asia/Kolkata"));
		System.out.println("Current Time in IST=" + timeKolkata);

		// Getting date from the base date i.e 01/01/1970
		LocalTime specificSecondTime = LocalTime.ofSecondOfDay(10000);
		System.out.println("10000th second time= " + specificSecondTime);
		// 今日
		LocalDate localDate = LocalDate.now();
		System.out.println("今日日期:" + localDate);
		// Create
		LocalDate firstDay_2017 = LocalDate.of(2017, Month.JANUARY, 1);
		System.out.println("Specific Date=" + firstDay_2017);
		LocalDate hundredDay2017 = LocalDate.ofYearDay(2017, 200);
		System.out.println("200th day of 2017=" + hundredDay2017);
		// plus and minus operations
		System.out.println("昨天日期: " + localDate.minusDays(1));
		System.out.println("明天日期: " + localDate.plusDays(1));
		System.out.println("上月的今天:" + localDate.minusMonths(1));
		System.out.println("下个月的今天:" + localDate.plusMonths(1));
		// Temporal adjusters for adjusting the dates
		System.out.println("本月第1天的日期: " + localDate.with(TemporalAdjusters.firstDayOfMonth()));
		System.out.println("本月最后1天的日期: " + localDate.with(TemporalAdjusters.lastDayOfMonth()));
		System.out.println("本年最后1天的日期: " + localDate.with(TemporalAdjusters.lastDayOfYear()));
		// TemporalFieldfor adjusting the dates
		System.out.println("今天是:" + localDate.getYear() + "第" + localDate.get(ChronoField.ALIGNED_WEEK_OF_YEAR) + "周");
		System.out.println("今天是周: " + localDate.getDayOfWeek());
		System.out.println("今天是本周的第:" + localDate.getDayOfWeek().getValue() + "天");
		// before
		System.out.println("今天在20171001日之前:" + localDate.isBefore(LocalDate.of(2017, 10, 1)));
		// 格式化
		System.out.println("格式化:" + localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
		// Instant 时间戳转换
		System.out.println("当前时间:" + Instant.now().atZone(ZoneId.systemDefault()));
		System.out.println("当前的时间戳:" + Instant.now().toEpochMilli());
		System.out.println(
				"时间戳转为时间字符串:" + Instant.ofEpochMilli(Instant.now().toEpochMilli()).atZone(ZoneId.systemDefault()));
		// Locale date time
		// Current Date
		LocalDateTime today = LocalDateTime.now();
		System.out.println("Current DateTime=" + today);

		// Current Date using LocalDate and LocalTime
		today = LocalDateTime.of(LocalDate.now(), LocalTime.now());
		System.out.println("Current DateTime=" + today);

		// Creating LocalDateTime by providing input arguments
		LocalDateTime specificDate = LocalDateTime.of(2014, Month.JANUARY, 1, 10, 10, 30);
		System.out.println("Specific Date=" + specificDate);

		// Current date in "Asia/Kolkata", you can get it from ZoneId javadoc
		LocalDateTime todayKolkata = LocalDateTime.now(ZoneId.of("Asia/Kolkata"));
		System.out.println("Current Date in IST=" + todayKolkata);

		// Getting date from the base date i.e 01/01/1970
		LocalDateTime dateFromBase = LocalDateTime.ofEpochSecond(10000, 0, ZoneOffset.UTC);
		System.out.println("10000th second time from 01/01/1970= " + dateFromBase);

		// Duration example
		Duration thirtyDay = Duration.ofDays(30);
		System.out.println("30天" + thirtyDay);

		// wait some time while something happens
		Instant second = Instant.now();
		// 计算两个时间,之间的长度 持续运行时间
		Duration duration = Duration.between(first, second);
		System.out.println("程序运行时间:" + duration);
		// 日期间隔计算
		Period period = localDate.until(localDate.with(TemporalAdjusters.lastDayOfYear()));
		System.out.println("Period Format= " + period);
		System.out.println("Months remaining in the year= " + period.getMonths());
	}

 

文明上网,理性发言
客户端 Android iPhone WP7