zoukankan      html  css  js  c++  java
  • jodaTime 的使用说明

    1 <dependency>
    2       <groupId>joda-time</groupId>
    3       <artifactId>joda-time</artifactId>
    4       <version>2.6</version>
    5 </dependency>
    Home:http://joda-time.sourceforge.net/
    
    JavaDoc:http://joda-time.sourceforge.net/apidocs/index.html
      1 Joda-Time
      2 
      3 Home:http://joda-time.sourceforge.net/
      4 
      5 JavaDoc:http://joda-time.sourceforge.net/apidocs/index.html
      6 
      7 直接看代码,这是在网上和根据API整理的一些例子,使用时看例子就可以了
      8 
      9     package com.yan.joda;  
     10       
     11     import java.util.Calendar;  
     12     import java.util.Date;  
     13     import java.util.Locale;  
     14     import org.joda.time.DateTime;  
     15     import org.joda.time.Days;  
     16     import org.joda.time.LocalDate;  
     17     import org.joda.time.format.DateTimeFormat;  
     18     import org.joda.time.format.DateTimeFormatter;  
     19       
     20     public class JodaTest {  
     21       
     22         public static void main(String[] args) {  
     23             //初始化时间  
     24                     DateTime dateTime=new DateTime(2012, 12, 13, 18, 23,55);  
     25                       
     26                     // 年,月,日,时,分,秒,毫秒    
     27                     DateTime dt3 = new DateTime(2011, 2, 13, 10, 30, 50, 333);// 2010年2月13日10点30分50秒333毫秒  
     28                       
     29                     //下面就是按照一点的格式输出时间  
     30                     String str2 = dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa");  
     31                     String str3 = dateTime.toString("dd-MM-yyyy HH:mm:ss");  
     32                     String str4 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");  
     33                     String str5 = dateTime.toString("MM/dd/yyyy HH:mm ZZZZ");  
     34                     String str6 = dateTime.toString("MM/dd/yyyy HH:mm Z");  
     35                       
     36                     DateTimeFormatter format = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");  
     37                     //时间解析    
     38                     DateTime dateTime2 = DateTime.parse("2012-12-21 23:22:45", format);    
     39                         
     40                     //时间格式化,输出==> 2012/12/21 23:22:45 Fri    
     41                     String string_u = dateTime2.toString("yyyy/MM/dd HH:mm:ss EE");    
     42                     System.out.println(string_u);    
     43                         
     44                     //格式化带Locale,输出==> 2012年12月21日 23:22:45 星期五    
     45                     String string_c = dateTime2.toString("yyyy年MM月dd日 HH:mm:ss EE",Locale.CHINESE);    
     46                     System.out.println(string_c);  
     47                       
     48                     DateTime dt1 = new DateTime();// 取得当前时间  
     49                        
     50                     // 根据指定格式,将时间字符串转换成DateTime对象,这里的格式和上面的输出格式是一样的    
     51                     DateTime dt2 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("2012-12-26 03:27:39");  
     52                       
     53                     //计算两个日期间隔的天数  
     54                     LocalDate start=new LocalDate(2012, 12,14);    
     55                     LocalDate end=new LocalDate(2013, 01, 15);    
     56                     int days = Days.daysBetween(start, end).getDays();  
     57                       
     58                     //计算两个日期间隔的小时数,分钟数,秒数  
     59                       
     60                     //增加日期  
     61                     DateTime dateTime1 = DateTime.parse("2012-12-03");  
     62                     dateTime1 = dateTime1.plusDays(30);  
     63                     dateTime1 = dateTime1.plusHours(3);  
     64                     dateTime1 = dateTime1.plusMinutes(3);  
     65                     dateTime1 = dateTime1.plusMonths(2);  
     66                     dateTime1 = dateTime1.plusSeconds(4);  
     67                     dateTime1 = dateTime1.plusWeeks(5);  
     68                     dateTime1 = dateTime1.plusYears(3);  
     69                       
     70                     // Joda-time 各种操作.....    
     71                     dateTime = dateTime.plusDays(1) // 增加天    
     72                                         .plusYears(1)// 增加年    
     73                                         .plusMonths(1)// 增加月    
     74                                         .plusWeeks(1)// 增加星期    
     75                                         .minusMillis(1)// 减分钟    
     76                                         .minusHours(1)// 减小时    
     77                                         .minusSeconds(1);// 减秒数  
     78                                         .minusMonths(2);// 减月
     79                     //判断是否闰月    
     80                     DateTime dt4 = new DateTime();    
     81                     org.joda.time.DateTime.Property month = dt4.monthOfYear();    
     82                     System.out.println("是否闰月:" + month.isLeap());  
     83                       
     84                     //取得 3秒前的时间    
     85                     DateTime dt5 = dateTime1.secondOfMinute().addToCopy(-3);    
     86                     dateTime1.getSecondOfMinute();// 得到整分钟后,过的秒钟数    
     87                     dateTime1.getSecondOfDay();// 得到整天后,过的秒钟数    
     88                     dateTime1.secondOfMinute();// 得到分钟对象,例如做闰年判断等使用  
     89                       
     90                     // DateTime与java.util.Date对象,当前系统TimeMillis转换    
     91                     DateTime dt6 = new DateTime(new Date());    
     92                     Date date = dateTime1.toDate();    
     93                     DateTime dt7 = new DateTime(System.currentTimeMillis());    
     94                     dateTime1.getMillis();   
     95                       
     96                     Calendar calendar = Calendar.getInstance();    
     97                     dateTime = new DateTime(calendar);  
     98         }  
     99     }  
    100 
    101 
    102 
    103 下面是一个小例子用来计算小宝宝从出生到现在总共的天数小时数等,首先用jdk的类去做,不用joda,然后再用joda去做,以做比较
    104 
    105 用jdk做的例子,这里算的从出生到现在的时间间隔是准确的,如果是输入的某天来算的话就不是很准确,多一秒就算一天。可以看到用jdk去做的话,要写的代码还是挺繁琐的。
    106 
    107     import java.text.SimpleDateFormat;  
    108     import java.util.Calendar;  
    109     import java.util.Date;  
    110     import java.util.Scanner;  
    111       
    112     public class CalBaby {  
    113         private final static String birthday = "2012-3-10 08:20:55";  
    114         /** 
    115          * @param args 
    116          */  
    117         public static void main(String[] args) {  
    118             while(true){  
    119                 String format1 = "yyyy-MM-dd";  
    120                 String format2 = "yyyy-MM-dd HH:mm:ss";  
    121                 Scanner s = new Scanner(System.in);  
    122                 System.out.println("########################################");  
    123                 cutTwoDateToDay(convertToDate1(birthday,format2),new Date(),false);  
    124                 System.out.println("请选择操作");  
    125                 System.out.println("请输入日期(格式例如:2012-11-08)");  
    126                 System.out.println("########################################");  
    127                 String endDateStr = s.nextLine();  
    128                 Date endDate = convertToDate1(endDateStr,format1);  
    129                 if(endDate == null){  
    130                     System.out.println("输入格式错误!请重新输入.");  
    131                     continue;  
    132                 }  
    133                 boolean inputFlag = true;  
    134                 cutTwoDateToDay(convertToDate1(birthday,format2),endDate,inputFlag);  
    135             }  
    136               
    137         }  
    138           
    139         /**  
    140          * 计算两个日期之间的差距天数  
    141          *   
    142          * @param a  
    143          * @param b  
    144          * @return  
    145          */    
    146         public static void cutTwoDateToDay(Date beginDate, Date endDate,boolean inputFlag) {    
    147             Calendar calendar = Calendar.getInstance();    
    148             long intervalDays = 0;    
    149             calendar.setTime(beginDate);    
    150             long begin = calendar.getTimeInMillis();    
    151             calendar.setTime(endDate);    
    152             long end = calendar.getTimeInMillis();  
    153             long totalM = end - begin;  
    154             System.out.println((end -begin));  
    155             System.out.println(24*60*60*1000);  
    156             intervalDays = totalM /(24*60*60*1000);  
    157             long intervalHours = (totalM - (intervalDays*24*60*60*1000))/(60*60*1000);  
    158            long intervalMin = (totalM - intervalDays * (24*60*60*1000) - intervalHours*60*60*1000)/(60*1000);  
    159            if(inputFlag){  
    160                if(totalM > 0L && totalM %(24*60*60*1000) > 0L){  
    161                    intervalDays = intervalDays + 1;  
    162                }  
    163                System.out.println("宝宝从出生到"+formatDate(endDate,"yyyy-MM-dd")+"已经"+intervalDays+"天了");  
    164            }else{  
    165                System.out.println("宝宝来到这个世界已经"+intervalDays+"天"+intervalHours+"小时"+intervalMin+"分钟了");  
    166            }  
    167               
    168         }   
    169           
    170         /**  
    171          * 将字符串日期转换为Date   yyyy-MM-dd HH:mm:ss  yyyy-MM-dd 
    172          *   
    173          * @param s  
    174          * @return  
    175          */    
    176         public static Date convertToDate1(String s,String format) {    
    177       
    178             if (s == null) {    
    179                 return null;    
    180             }    
    181             try {    
    182                 SimpleDateFormat df = new SimpleDateFormat(format);    
    183                 return df.parse(s);    
    184             } catch (Exception e) {    
    185                 return null;    
    186             }    
    187         }  
    188               
    189         public static String formatDate(Date date, String strType)  
    190         {  
    191             if (date == null)  
    192             {  
    193                 return null;  
    194             }  
    195       
    196             SimpleDateFormat sdf = new SimpleDateFormat(strType);  
    197             try  
    198             {  
    199                 return sdf.format(date);  
    200             }  
    201             catch (Exception e)  
    202             {  
    203                 return null;  
    204             }  
    205         }  
    206     }  
    207 
    208 
    209 
    210 下面是用joda来做,用这个来做就简单的多了,而且也很准确。
    211 
    212 Java代码  收藏代码
    213 
    214         import java.util.Scanner;  
    215         import org.joda.time.DateTime;  
    216         import org.joda.time.Days;  
    217         import org.joda.time.LocalDate;  
    218         import org.joda.time.format.DateTimeFormat;  
    219         import org.joda.time.format.DateTimeFormatter;  
    220           
    221         public class CalBabyJoda {  
    222               
    223             private final static String birthday = "2012-3-10 08:20:55";  
    224           
    225             public static void main(String[] args) {  
    226                 while(true){  
    227                     Scanner s = new Scanner(System.in);  
    228                     System.out.println("########################################");  
    229                     DateTimeFormatter format1 = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");  
    230                     DateTimeFormatter format2 = DateTimeFormat .forPattern("yyyy-MM-dd");  
    231                     DateTime startDateTime = DateTime.parse(birthday, format1);  
    232                     System.out.println("宝宝来到这个世界已经");  
    233                     calDateToDay(startDateTime,new DateTime());  
    234                     System.out.println("如选择其它日期请输入(格式例如:2012-11-08 14:24:54或着2012-11-08)");  
    235                     System.out.println("########################################");  
    236                     String endDate = s.nextLine();  
    237                     DateTime endDateTime = null;  
    238                     try{  
    239                         endDateTime = DateTime.parse(endDate,format1);  
    240                     }catch(Exception e){  
    241                         try{  
    242                             endDateTime = DateTime.parse(endDate,format2);  
    243                         }catch(Exception e1){  
    244                             System.out.println("输入格式错误!请重新输入.");  
    245                             continue;  
    246                         }  
    247                     }  
    248                     System.out.println("宝宝从出生到" + endDateTime.toString("yyyy-MM-dd HH:mm:ss") + "已经");  
    249                     calDateToDay(startDateTime,endDateTime);  
    250                 }  
    251             }  
    252               
    253             public static void calDateToDay(DateTime startDateTime,DateTime endDateTime){  
    254                   
    255                  LocalDate start=new LocalDate(startDateTime);    
    256                 LocalDate end=new LocalDate(endDateTime);  
    257                 Days days = Days.daysBetween(start, end);  
    258                 int intervalDays = days.getDays();  
    259                 int intervalHours = endDateTime.getHourOfDay() - startDateTime.getHourOfDay();  
    260                 int intervalMinutes = endDateTime.getMinuteOfHour() - startDateTime.getMinuteOfHour();  
    261                 int intervalSeconds = endDateTime.getSecondOfMinute() - startDateTime.getSecondOfMinute();  
    262                   
    263                   
    264                 if(intervalSeconds < 0){  
    265                     intervalMinutes = intervalMinutes -1;  
    266                     intervalSeconds = 60 + intervalSeconds;  
    267                 }  
    268                   
    269                 if(intervalMinutes < 0){  
    270                     intervalHours = intervalHours -1;  
    271                     intervalMinutes = 60 + intervalMinutes;  
    272                 }  
    273                   
    274                 if(intervalHours < 0){  
    275                     intervalDays = intervalDays -1;  
    276                     intervalHours = 24 + intervalHours;  
    277                 }  
    278                           
    279                 System.out.println(intervalDays + "天" + intervalHours +   
    280                         "小时" + intervalMinutes + "分钟" + intervalSeconds + "秒");  
    281                 System.out.println("############################");  
    282             }  
    283           
    284         }
  • 相关阅读:
    HGE tutorial04
    HGE tutorial03
    HGE tutorial02 plus
    HGE tutorial02
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
    C 语言实例
  • 原文地址:https://www.cnblogs.com/cb0327/p/5127507.html
Copyright © 2011-2022 走看看