Java8 時間API

java.time 包是在JDK8新引入的,提供了用于日期、时间、实例和周期的主要API。

所有类都是不可变的、线程安全的。

import java.time.*;
import java.time.format.DateTimeFormatter;

public class DateTest {

	public static void main(String[] args) {

		LocalDate localDate = LocalDate.now();
		System.out.println("当前日期: " + localDate);

		//获取年、月、日
		System.out.println("年份: " + localDate.getYear());
		System.out.println("月份: " + localDate.getMonthValue());
		System.out.println("日期: " + localDate.getDayOfMonth());
		System.out.println(localDate.getYear() + "年第" + localDate.getDayOfYear() + "年");
		System.out.println("星期: " + localDate.getDayOfWeek());

		System.out.println("判斷當前年份是否是閏年:" + localDate.isLeapYear());

		//創建時間對象
		LocalDate lastTime = localDate.of(2008, 8, 8);
		System.out.println(lastTime);

		//LocalDate 轉 String
		DateTimeFormatter rule = DateTimeFormatter.ofPattern("yyyy-MM-dd");
		String timeStr = lastTime.format(rule);
		System.out.println(timeStr);

		//String 轉 LocalDate
		LocalDate lastTime1 = localDate.parse(timeStr);
		System.out.println(lastTime1);

		LocalDateTime now = LocalDateTime.now();
		System.out.println(now.getYear() + "年"
						+ now.getMonthValue() + "月"
						+ now.getDayOfMonth() + "日  時間:"
						+ now.getHour() +  ":"    //時
						+ now.getMinute() + ":"    //分
						+ now.getSecond() + ":"    //秒
						+ now.getNano());          //毫秒

		//增加年份 返回新的對象
		LocalDateTime nextYear = now.plusYears(1);
		System.out.println(nextYear);

		//增加月份 返回新的對象
		LocalDateTime nextMonth = nextYear.plusMonths(1);
		System.out.println(nextMonth);

		//增加天數 返回新的對象
		LocalDateTime nextDay = nextMonth.plusDays(2);
		System.out.println(nextDay);

		//增加小時數 返回新的對象
		LocalDateTime nextHours = nextDay.plusHours(2);
		System.out.println(nextHours);

		//nextHours.plusMinutes(minutes)
		//nextHours.plusSeconds(seconds)
		//nextHours.plusNanos(nanos)
		//不一一演示

		//減去年份
		LocalDateTime preYear = nextHours.minusYears(1);
		System.out.println(preYear);

		//減去月份
		LocalDateTime preMonth = preYear.minusMonths(1);
		System.out.println(preMonth);

		//減去日期
		LocalDateTime preDay = preMonth.minusDays(2);
		System.out.println(preDay);

		//設置時間
		//設置年份
		LocalDateTime setYear = preDay.withYear(1997);
		System.out.println(setYear);

		//設置月份
		LocalDateTime setMonth = setYear.withMonth(5);
		System.out.println(setMonth);

		LocalDateTime dateTime = LocalDateTime.parse("2010-01-01T19:24:01.078");
		System.out.println("String 轉 LocalDateTime: " + dateTime);

		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
		System.out.println("LocalDateTime 轉 String: " + dateTime.format(formatter));

		//java.time.Duration 計算時間
		LocalDateTime start = LocalDateTime.of(1997, 7, 3, 1, 1);
		LocalDateTime end = LocalDateTime.of(2020, 1, 1, 1, 1);

		Duration result = Duration.between(start, end);
		System.out.println("距離天數: " + result.toDays()); //沒有距離年數的方法
		System.out.println("距離小時數: " + result.toHours());
		System.out.println("距離分鐘數: " + result.toMinutes());
		System.out.println("距離秒數: " + result.toMillis());  //秒
	}

}

  

原文地址:https://www.cnblogs.com/mxh-java/p/11523598.html

时间: 2024-10-12 21:34:10

Java8 時間API的相关文章

各種日期時間計算

各種日期時間計算 //改變日期format string startStr = start.ToString("yyyy-MM-dd HH:mm:ss"); DateTime dt = Convert.ToDateTime(startStr);//轉回DateTime P.S format 大小寫意義不同: MM=month, mm=Minutes, HH=24hours, hh=12hours //日期時間相加減 DateTime start = Convert.ToDateTime

【转】Visual Studio單元測試小應用-測執行時間

[转]Visual Studio單元測試小應用-測執行時間 Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用Stopwatch,最近我都改用單元測試來測,快又簡單. Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用Stopwatch,最近我都改用單元測試來測,快又簡單. 範例程式:有人說Catch不加Expection,因為不用匹配會比較快,我不相信,就來測測看. { for (i

邁向IT專家成功之路的三十則鐵律 鐵律七:IT人效率之道-時間管理

彷間有許多與時間管理方面的相關書籍與實務課程,但是究竟對於一位IT專業人士來說,甚麼樣的時間管理法則才是最有效率的呢?過去有許多IT朋友私下請教顧大俠這個問題,而顧大俠始終沒有很完整的分享這方面的經驗,今天就利用這個機會,來和大家分享一下IT人的最佳時間管理法則. 說實在的時間管理對於各行各業的人士來說都是相當重要的,因為它會直接影響到你的生活品質,進一步則會決定了你能夠賺多少錢.首先談談時間管理法則的宗旨,那就是別讓工作這檔事影響了您的生活品質,這包括精神.睡眠.親子關係.夫妻關係.朋友關係等

C/C++ 時間相關函數

最近在處理一些時間上面的問題,將這些函數整理一下囉 先從基本時間概念開始,比較要注意的應該是秒之下的時間單位 毫秒(ms):1秒=1000毫秒 之所以會看到這個時間單位是因為在影像處理裡面,如果是做到real-time的話 1秒要有30張frames,那就是一張frames要0.03333秒 C/C++中時間相關函數主要有兩個:clock()跟time() 這兩個函數都是在<time.h>裡面,使用的話要記得引用 clock() 函數定義 The C library function cloc

線陣相機處理時間計算方法

線陣相機圖像處理時間計算,以xx案子為例, 相機使用16K線陣 最大速度300mm/s FOV 300mm 計算方法: 1,            每個像素點大小=FOV/像素數=300/16*1000 2,            行頻=速度/每個像素點大小=300/(300/16*1000) = 16*1000 3,            相機數據量=行頻*像素數 = (16*1000)*(16*1000) = 256*1,000,000 byte= 256M/S 此案子一秒最大能產生256M

vb.net 日期時間

Dim dMyDate As DateTime = DateTime.Now'當前時間日期 DateDiff("h", C13, C3)' 二時間差 '日期格式 C2 = Format(dMyDate, "yyyy-MM-dd_HH:mm:ss") DateTimePicker1.Value = dMyDate.Date '日期加減 DateTimePicker1.Value = DateTimePicker1.Value.AddDays(-15) DateTime

Java8 日期时间API

使用Java8,新的日期时间API引入覆盖旧的日期时间API的以下缺点. 非线程安全 - java.util.Date不是线程安全的,因此开发者必须在使用日期处理并发性问题.新的日期时间API是不可变的,并且没有setter方法. 设计不佳 - 默认的开始日期从1900年,开始每月从1天从0开始,所以没有统一.不直接使用方法操作日期.新的API提供了这样操作实用方法. 困难的时区处理 - 开发人员必须编写大量的代码来处理时区的问题.新的API设计开发保持特定领域设计. JAVA8引入了java.

Java8 流式 API(`java.util.stream`)

熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C? 中,有 LINQ 来实现.那么在 Java 中有这样的操作吗?答案是有的,Java8 中引入了大量新特性,其中一个就是 Java 的流式 API. 在 Java 8 中,流(Stream)与迭代器类似,都是用来对集合内的元素进行某些操作.它们之间最大的差别,是对迭代器的每个操作都会即时生效,而对流的操作则不是这样.流的操作有两

20191227 Java8 日期时间API

背景 Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: 非线程安全 ? java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一. 设计很差 ? Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义.java.util.Date同时包含日期