Java日期计算

1、时间类得作成


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//方法一:取系统点间 
DateTime dt1 = new DateTime(); 
   
//方法二:通过java.util.Date对象生成 
DateTime dt2 = new DateTime(new Date()); 
   
//方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒) 
DateTime dt3 = new DateTime(2012, 5, 20, 13, 14, 0, 0); 
   
//方法四:ISO8601形式生成 
DateTime dt4 = new DateTime("2012-05-20"); 
DateTime dt5 = new DateTime("2012-05-20T13:14:00"); 
   
//只需要年月日的时候 
LocalDate localDate = new LocalDate(2009, 9, 6);// September 6, 2009 
   
//只需要时分秒毫秒的时候 
LocalTime localTime = new LocalTime(13, 30, 26, 0);// 1:30:26PM

 2、获取年月日点分秒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DateTime dt = new DateTime(); 
//年 
int year = dt.getYear(); 
//月 
int month = dt.getMonthOfYear(); 
//日 
int day = dt.getDayOfMonth(); 
//星期 
int week = dt.getDayOfWeek(); 
//点 
int hour = dt.getHourOfDay(); 
//分 
int min = dt.getMinuteOfHour(); 
//秒 
int sec = dt.getSecondOfMinute(); 
//毫秒 
int msec = dt.getMillisOfSecond(); 

 3、星期的特殊处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DateTime dt = new DateTime(); 
   
//星期 
switch(dt.getDayOfWeek()) { 
case DateTimeConstants.SUNDAY: 
    System.out.println("星期日"); 
    break
case DateTimeConstants.MONDAY: 
    System.out.println("星期一"); 
    break
case DateTimeConstants.TUESDAY: 
    System.out.println("星期二"); 
    break
case DateTimeConstants.WEDNESDAY: 
    System.out.println("星期三"); 
    break
case DateTimeConstants.THURSDAY: 
    System.out.println("星期四"); 
    break
case DateTimeConstants.FRIDAY: 
    System.out.println("星期五"); 
    break
case DateTimeConstants.SATURDAY: 
    System.out.println("星期六"); 
    break

 4、与JDK日期对象的转换

1
2
3
4
5
6
7
8
9
10
DateTime dt = new DateTime(); 
   
//转换成java.util.Date对象 
Date d1 = new Date(dt.getMillis()); 
Date d2 = dt.toDate(); 
   
//转换成java.util.Calendar对象 
Calendar c1 = Calendar.getInstance(); 
c1.setTimeInMillis(dt.getMillis()); 
Calendar c2 = dt.toCalendar(Locale.getDefault()); 

5、日期前后推算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DateTime dt = new DateTime(); 
   
//昨天 
DateTime yesterday = dt.minusDays(1);        
//明天 
DateTime tomorrow = dt.plusDays(1);      
//1个月前 
DateTime before1month = dt.minusMonths(1);       
//3个月后 
DateTime after3month = dt.plusMonths(3);         
//2年前 
DateTime before2year = dt.minusYears(2);         
//5年后 
DateTime after5year = dt.plusYears(5);

6、取特殊日期

1
2
3
4
5
6
7
DateTime dt = new DateTime();    
   
//月末日期   
DateTime lastday = dt.dayOfMonth().withMaximumValue(); 
   
//90天后那周的周一 
DateTime firstday = dt.plusDays(90).dayOfWeek().withMinimumValue();

7、时区

1
2
3
4
5
6
//默认设置为日本时间 
DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo")); 
DateTime dt1 = new DateTime(); 
   
//伦敦时间 
DateTime dt2 = new DateTime(DateTimeZone.forID("Europe/London"));

8、计算区间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
DateTime begin = new DateTime("2012-02-01"); 
DateTime end = new DateTime("2012-05-01"); 
   
//计算区间毫秒数 
Duration d = new Duration(begin, end); 
long time = d.getMillis(); 
   
//计算区间天数 
Period p = new Period(begin, end, PeriodType.days()); 
int days = p.getDays(); 
   
//计算特定日期是否在该区间内 
Interval i = new Interval(begin, end); 
boolean contained = i.contains(new DateTime("2012-03-01"));

9、日期比较

1
2
3
4
5
6
7
8
9
10
11
12
DateTime d1 = new DateTime("2012-02-01"); 
DateTime d2 = new DateTime("2012-05-01"); 
   
//和系统时间比 
boolean b1 = d1.isAfterNow(); 
boolean b2 = d1.isBeforeNow(); 
boolean b3 = d1.isEqualNow(); 
   
//和其他日期比 
boolean f1 = d1.isAfter(d2); 
boolean f2 = d1.isBefore(d2); 
boolean f3 = d1.isEqual(d2);

10、格式化输出

1
2
3
4
5
6
7
DateTime dateTime = new DateTime(); 
   
String s1 = dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa"); 
String s2 = dateTime.toString("yyyy-MM-dd HH:mm:ss"); 
String s3 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa"); 
String s4 = dateTime.toString("yyyy/MM/dd HH:mm ZZZZ"); 
String s5 = dateTime.toString("yyyy/MM/dd HH:mm Z"); 

  

posted @   浅笑19  阅读(410)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示