Joda-Time 的使用

目錄

Joda-Time 的使用
DateTime
  構造函數
  方法
區間判斷
Duration
  構造方法
  方法
Interval
  構造方法
Property
  構造函數
  方法
   字符串輸出當前時間的選擇
   所選Property 增加 i 個時間
   轉爲對應得DateTime類型
   獲得正在使用得字段
   獲得毫秒數
   獲得時間的天花板,也就是獲得明天的開始時間
   獲得時間的地板,也就是獲得今天的開始時間
   獲得時間的閾值時間,也就是獲得今天的開始時間或明天的開始時間
   獲得當前時間字段的最大(小)值


Joda-Time 的使用

DateTime

構造函數

DateTime dateTime = new DateTime()

創建當前時間的 dateTime

DateTime dateTime = new DateTime(Integer year, Integer month, Integer day, Integer hour, Integer minute, Integer second);

傳入參數創建對應的 dateTime

DateTime dateTime = new DateTime(Integer year, Integer month, Integer day, Integer hour, Integer minute);

傳入參數創建對應的 dateTime

方法

方法 含義 舉例
Property pro = .year() 獲得年
Property pro = .monthOfYear() 獲得月
Property pro = .dayOfMonth() 獲得天
Property pro = .dayOfYear() 獲得當天屬於當年第多少天
Property pro = .dayOfWeek() 獲得當前屬於這個星期的星期幾
Property pro = .hourOfDay() 獲得小時
Property pro = .minuteOfHour() 獲得分
Property pro = .secondOfMinute() 獲得秒
Property pro = .millisOfSecond() 獲得毫秒
DateTime dateTime = .plus(Long millisSecond) 當前dateTime加上+millsSecond毫秒 當前時間+10秒
new DateTime().plus(10000)
DateTime dateTime = .plusYears(Integer day)
plusMonths、plusDays、plusHours、plusMinutes、plusSeconds、plusWeeks
當前時間加上年、月、日、時、分、秒
plusWeeks 加幾個周
如果是負數就是減n
獲得下週當前時間
new DateTime().plusWeeks(1);
String str = .toString(String forMaterStr) 當前時間根據傳入格式轉爲字符串 輸出 yyyy-MM-dd HH:mm:ss
new DateTime().toString(“yyyy-MM-dd HH:mm:ss)
Boolean isBefore = .isBefore(Long millisSecond);
Boolean isBefore =.isBeforeNow()
比較當前時間是否在millisSecond之前,isBeforeNow和現在時間進行對比 Boolean isBefore = dateTime.isBeforeNow();
// 注意如果兩個時間相差小於一毫秒則兩者時間默認爲相同時間
Boolean isAfter= .isAfter(Long millisSecond);
Boolean isAfter=.isAfterNow()
同上不過相反 同上不過相反
DateTime dateTime = .withYear(int year); 設置當前時間的年 dateTime =dateTime.withYear(2019)
withMonthOfYear(int month); 設置當前時間爲第幾個月
withDayOfMonth(int day); 設置當前時間爲當月的第幾天
withHourOfDay(int hour); 設置爲今天的第幾個小時
withMinuteOfHour(int minute) 設置爲當前小時的第幾分鐘
withSecondOfMinute(int second); 設置爲當前分鐘的第幾秒
withTime(int hour, int minute, int second, int millisSecond) 設置當前時間的小時、分鐘、秒鐘、毫秒
withDayOfYear(int day); 區別於withDayOfMonth(),這個是設置當前時間爲當年的第多少天
withMillisOfDay(Long millisSeconds); 設置時間爲當天的第多少毫秒

區間判斷


Duration

構造方法

Duration duration = new Duration(DateTime beginTime,DateTime endTime)

方法

  • long lon = getStandardMinutes();獲得兩者的分鐘差值
  • long lon = getStandardHours();獲得兩者的小時鐘差值
  • long lon = getStandardDays();獲得兩者的天差值
  • long lon = getStandardSeconds();獲得兩者的秒鐘差值
  • long lon = getMillis();獲得兩者的毫秒差值
System.out.println("區間值"+
	new Duration(new DateTime().plusMinutes(1),new DateTime()).getMillis()
);
-- 區間值 -60000

Interval

構造方法

Interval i = new Interval(DateTime beginTime,DateTime endTime);

判斷目標時間是否在兩者質檢

boolean contained = i.contains(new DateTime().plus(-1000));

//起始時間當前時間  - 1分鐘
DateTime startTime = new DateTime().plusMinutes(-1);
//終止時間當前時間 + 1天
DateTime endTime = new DateTime().plusDays(1);
Interval interval = new Interval(startTime, endTime);
DateTime dateTime1 = new DateTime();
if (interval.contains(dateTime1)) {
    System.out.println(dateTime1.toString(DATEFORMAT)+",在區間內");
}
dateTime1 = new DateTime().plusDays(2);
if (!interval.contains(dateTime1)) {
    System.out.println(dateTime1.toString(DATEFORMAT)+",不在區間內");
}
--
2019-11-11 09:16:47,在區間內
2019-11-13 09:16:47,不在區間內 

Property

構造函數

Property的創建大多數是由DateTime 的方法 構成的,比如:

Property pro = .year(); //獲得年Property 
Property pro = .monthOfYear(); //獲得月Property  
Property pro = .dayOfMonth(); //獲得天Property  
Property pro = .dayOfYear(); //獲得當天屬於當年第多少天
Property pro = .dayOfWeek(); //獲得當前屬於這個星期的星期幾
Property pro = .hourOfDay(); //獲得小時
Property pro = .minuteOfHour(); //獲得分
Property pro = .secondOfMinute(); //獲得秒
Property pro = .millisOfSecond(); //獲得毫秒

方法

字符串輸出當前時間的選擇

String str = getAsString()

e.g.:

System.out.println("今天是幾月:"+new DateTime().dayOfMonth().getAsString());
// 今天是幾月:11

所選Property 增加 i 個時間

DateTime time = addToCopy(Integer i)

e.g.

System.out.println("addToCopy+1後是幾月:"+property.addToCopy(1).dayOfMonth().getAsString());
// addToCopy+1後是幾月:12

轉爲對應得DateTime類型

DateTime time = getDateTime()

e.g.:

dateTime = new DateTime().plusWeeks(1);
DateTime.Property property = dateTime.dayOfMonth(); System.out.println(dateTime.toString(DATEFORMAT)); System.out.println(property.getDateTime().toString(DATEFORMAT));
// 2019-11-18 11:18:46
// 2019-11-18 11:18:46 

獲得正在使用得字段

DateTimeField dateTimeField = getField();

e.g.:

DateTime dateTime = new DateTime();
DateTime.Property property = dateTime.dayOfMonth();
System.out.println(property.getField().getName());
//  dayOfMonth 

獲得毫秒數

Long lon =getMillis()

獲得時間的天花板,也就是獲得明天的開始時間

DateTime time = .roundCeilingCopy()

e.g.:

DateTime dateTime = new DateTime();
System.out.println(dateTime.toString(DATEFORMAT));
System.out.println(dateTime.dayOfMonth().roundCeilingCopy().toString(DATEFORMAT));
// 2019-11-11 11:54:50
// 2019-11-12 00:00:00

獲得時間的地板,也就是獲得今天的開始時間

DateTime time = .roundHalfFloorCopy()

e.g.:

DateTime dateTime = new DateTime();
System.out.println(dateTime.toString(DATEFORMAT));
System.out.println(dateTime.dayOfMonth().roundHalfFloorCopy().toString(DATEFORMAT));
// 2019-11-11 11:54:58
// 2019-11-11 00:00:00

獲得時間的閾值時間,也就是獲得今天的開始時間或明天的開始時間

DateTime time = .roundHalfCeilingCopy() //獲得時間的閾值,今天得開始時間<12:00<=明天的開始時間
DateTime time = .roundHalfFloorCopy() //獲得時間的閾值,今天得開始時間<=12:00<明天的開始時間
注意兩者的不同 兩則在中間時間的取值不一樣
e.g.:

DateTime dateTime = new DateTime();
System.out.println(dateTime.toString(DATEFORMAT));
System.out.println(dateTime.dayOfMonth().roundHalfFloorCopy().toString(DATEFORMAT));
// 2019-11-11 11:54:58
// 2019-11-11 00:00:00

獲得當前時間字段的最大(小)值

DateTime time = .withMaximumValue(); //根據property所屬的字段來獲得其最大,例如是 dayOfMonth() 則爲當月的最大一日 30 or 31
DateTime time = .withMinimumValue(); //根據property所屬的字段來獲得其最小,例如是 dayOfMonth() 則爲當月的最小 1

注意年的最大(小)值爲292278993(-292275054)

System.out.println("max:" + new DateTime().monthOfYear().withMaximumValue().toString(DATEFORMAT));
System.out.println("min:" + new DateTime().monthOfYear().withMinimumValue().toString(DATEFORMAT));
// max:2019-12-11 14:08:41
// min:2019-01-11 14:08:41
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章