• joda-time


    Joda-Time 

    Home:http://joda-time.sourceforge.net/ 

    JavaDoc:http://joda-time.sourceforge.net/apidocs/index.html 

    直接看代码,这是在网上和根据API整理的一些例子,使用时看例子就可以了 

    Java代码  收藏代码
    1. package com.yan.joda;  
    2.   
    3. import java.util.Calendar;  
    4. import java.util.Date;  
    5. import java.util.Locale;  
    6. import org.joda.time.DateTime;  
    7. import org.joda.time.Days;  
    8. import org.joda.time.LocalDate;  
    9. import org.joda.time.format.DateTimeFormat;  
    10. import org.joda.time.format.DateTimeFormatter;  
    11.   
    12. public class JodaTest {  
    13.   
    14.     public static void main(String[] args) {  
    15.         //初始化时间  
    16.                 DateTime dateTime=new DateTime(2012, 12, 13, 18, 23,55);  
    17.                   
    18.                 // 年,月,日,时,分,秒,毫秒    
    19.                 DateTime dt3 = new DateTime(2011, 2, 13, 10, 30, 50, 333);// 2010年2月13日10点30分50秒333毫秒  
    20.                   
    21.                 //下面就是按照一点的格式输出时间  
    22.                 String str2 = dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa");  
    23.                 String str3 = dateTime.toString("dd-MM-yyyy HH:mm:ss");  
    24.                 String str4 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");  
    25.                 String str5 = dateTime.toString("MM/dd/yyyy HH:mm ZZZZ");  
    26.                 String str6 = dateTime.toString("MM/dd/yyyy HH:mm Z");  
    27.                   
    28.                 DateTimeFormatter format = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");  
    29.                 //时间解析    
    30.                 DateTime dateTime2 = DateTime.parse("2012-12-21 23:22:45", format);    
    31.                     
    32.                 //时间格式化,输出==> 2012/12/21 23:22:45 Fri    
    33.                 String string_u = dateTime2.toString("yyyy/MM/dd HH:mm:ss EE");    
    34.                 System.out.println(string_u);    
    35.                     
    36.                 //格式化带Locale,输出==> 2012年12月21日 23:22:45 星期五    
    37.                 String string_c = dateTime2.toString("yyyy年MM月dd日 HH:mm:ss EE",Locale.CHINESE);    
    38.                 System.out.println(string_c);  
    39.                   
    40.                 DateTime dt1 = new DateTime();// 取得当前时间  
    41.                    
    42.                 // 根据指定格式,将时间字符串转换成DateTime对象,这里的格式和上面的输出格式是一样的    
    43.                 DateTime dt2 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("2012-12-26 03:27:39");  
    44.                   
    45.                 //计算两个日期间隔的天数  
    46.                 LocalDate start=new LocalDate(2012, 12,14);    
    47.                 LocalDate end=new LocalDate(2013, 01, 15);    
    48.                 int days = Days.daysBetween(start, end).getDays();  
    49.                   
    50.                 //计算两个日期间隔的小时数,分钟数,秒数  
    51.                   
    52.                 //增加日期  
    53.                 DateTime dateTime1 = DateTime.parse("2012-12-03");  
    54.                 dateTime1 = dateTime1.plusDays(30);  
    55.                 dateTime1 = dateTime1.plusHours(3);  
    56.                 dateTime1 = dateTime1.plusMinutes(3);  
    57.                 dateTime1 = dateTime1.plusMonths(2);  
    58.                 dateTime1 = dateTime1.plusSeconds(4);  
    59.                 dateTime1 = dateTime1.plusWeeks(5);  
    60.                 dateTime1 = dateTime1.plusYears(3);  
    61.                   
    62.                 // Joda-time 各种操作.....    
    63.                 dateTime = dateTime.plusDays(1) // 增加天    
    64.                                     .plusYears(1)// 增加年    
    65.                                     .plusMonths(1)// 增加月    
    66.                                     .plusWeeks(1)// 增加星期    
    67.                                     .minusMillis(1)// 减分钟    
    68.                                     .minusHours(1)// 减小时    
    69.                                     .minusSeconds(1);// 减秒数  
    70.                   
    71.                 //判断是否闰月    
    72.                 DateTime dt4 = new DateTime();    
    73.                 org.joda.time.DateTime.Property month = dt4.monthOfYear();    
    74.                 System.out.println("是否闰月:" + month.isLeap());  
    75.                   
    76.                 //取得 3秒前的时间    
    77.                 DateTime dt5 = dateTime1.secondOfMinute().addToCopy(-3);    
    78.                 dateTime1.getSecondOfMinute();// 得到整分钟后,过的秒钟数    
    79.                 dateTime1.getSecondOfDay();// 得到整天后,过的秒钟数    
    80.                 dateTime1.secondOfMinute();// 得到分钟对象,例如做闰年判断等使用  
    81.                   
    82.                 // DateTime与java.util.Date对象,当前系统TimeMillis转换    
    83.                 DateTime dt6 = new DateTime(new Date());    
    84.                 Date date = dateTime1.toDate();    
    85.                 DateTime dt7 = new DateTime(System.currentTimeMillis());    
    86.                 dateTime1.getMillis();   
    87.                   
    88.                 Calendar calendar = Calendar.getInstance();    
    89.                 dateTime = new DateTime(calendar);  
    90.     }  
    91. }  



    下面是一个小例子用来计算小宝宝从出生到现在总共的天数小时数等,首先用jdk的类去做,不用joda,然后再用joda去做,以做比较 

    用jdk做的例子,这里算的从出生到现在的时间间隔是准确的,如果是输入的某天来算的话就不是很准确,多一秒就算一天。可以看到用jdk去做的话,要写的代码还是挺繁琐的。 

    Java代码  收藏代码
    1. import java.text.SimpleDateFormat;  
    2. import java.util.Calendar;  
    3. import java.util.Date;  
    4. import java.util.Scanner;  
    5.   
    6. public class CalBaby {  
    7.     private final static String birthday = "2012-3-10 08:20:55";  
    8.     /** 
    9.      * @param args 
    10.      */  
    11.     public static void main(String[] args) {  
    12.         while(true){  
    13.             String format1 = "yyyy-MM-dd";  
    14.             String format2 = "yyyy-MM-dd HH:mm:ss";  
    15.             Scanner s = new Scanner(System.in);  
    16.             System.out.println("########################################");  
    17.             cutTwoDateToDay(convertToDate1(birthday,format2),new Date(),false);  
    18.             System.out.println("请选择操作");  
    19.             System.out.println("请输入日期(格式例如:2012-11-08)");  
    20.             System.out.println("########################################");  
    21.             String endDateStr = s.nextLine();  
    22.             Date endDate = convertToDate1(endDateStr,format1);  
    23.             if(endDate == null){  
    24.                 System.out.println("输入格式错误!请重新输入.");  
    25.                 continue;  
    26.             }  
    27.             boolean inputFlag = true;  
    28.             cutTwoDateToDay(convertToDate1(birthday,format2),endDate,inputFlag);  
    29.         }  
    30.           
    31.     }  
    32.       
    33.     /**  
    34.      * 计算两个日期之间的差距天数  
    35.      *   
    36.      * @param a  
    37.      * @param b  
    38.      * @return  
    39.      */    
    40.     public static void cutTwoDateToDay(Date beginDate, Date endDate,boolean inputFlag) {    
    41.         Calendar calendar = Calendar.getInstance();    
    42.         long intervalDays = 0;    
    43.         calendar.setTime(beginDate);    
    44.         long begin = calendar.getTimeInMillis();    
    45.         calendar.setTime(endDate);    
    46.         long end = calendar.getTimeInMillis();  
    47.         long totalM = end - begin;  
    48.         System.out.println((end -begin));  
    49.         System.out.println(24*60*60*1000);  
    50.         intervalDays = totalM /(24*60*60*1000);  
    51.         long intervalHours = (totalM - (intervalDays*24*60*60*1000))/(60*60*1000);  
    52.        long intervalMin = (totalM - intervalDays * (24*60*60*1000) - intervalHours*60*60*1000)/(60*1000);  
    53.        if(inputFlag){  
    54.            if(totalM > 0L && totalM %(24*60*60*1000) > 0L){  
    55.                intervalDays = intervalDays + 1;  
    56.            }  
    57.            System.out.println("宝宝从出生到"+formatDate(endDate,"yyyy-MM-dd")+"已经"+intervalDays+"天了");  
    58.        }else{  
    59.            System.out.println("宝宝来到这个世界已经"+intervalDays+"天"+intervalHours+"小时"+intervalMin+"分钟了");  
    60.        }  
    61.           
    62.     }   
    63.       
    64.     /**  
    65.      * 将字符串日期转换为Date   yyyy-MM-dd HH:mm:ss  yyyy-MM-dd 
    66.      *   
    67.      * @param s  
    68.      * @return  
    69.      */    
    70.     public static Date convertToDate1(String s,String format) {    
    71.   
    72.         if (s == null) {    
    73.             return null;    
    74.         }    
    75.         try {    
    76.             SimpleDateFormat df = new SimpleDateFormat(format);    
    77.             return df.parse(s);    
    78.         } catch (Exception e) {    
    79.             return null;    
    80.         }    
    81.     }  
    82.           
    83.     public static String formatDate(Date date, String strType)  
    84.     {  
    85.         if (date == null)  
    86.         {  
    87.             return null;  
    88.         }  
    89.   
    90.         SimpleDateFormat sdf = new SimpleDateFormat(strType);  
    91.         try  
    92.         {  
    93.             return sdf.format(date);  
    94.         }  
    95.         catch (Exception e)  
    96.         {  
    97.             return null;  
    98.         }  
    99.     }  
    100. }  



    下面是用joda来做,用这个来做就简单的多了,而且也很准确。 

    Java代码  收藏代码
      1. import java.util.Scanner;  
      2. import org.joda.time.DateTime;  
      3. import org.joda.time.Days;  
      4. import org.joda.time.LocalDate;  
      5. import org.joda.time.format.DateTimeFormat;  
      6. import org.joda.time.format.DateTimeFormatter;  
      7.   
      8. public class CalBabyJoda {  
      9.       
      10.     private final static String birthday = "2012-3-10 08:20:55";  
      11.   
      12.     public static void main(String[] args) {  
      13.         while(true){  
      14.             Scanner s = new Scanner(System.in);  
      15.             System.out.println("########################################");  
      16.             DateTimeFormatter format1 = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");  
      17.             DateTimeFormatter format2 = DateTimeFormat .forPattern("yyyy-MM-dd");  
      18.             DateTime startDateTime = DateTime.parse(birthday, format1);  
      19.             System.out.println("宝宝来到这个世界已经");  
      20.             calDateToDay(startDateTime,new DateTime());  
      21.             System.out.println("如选择其它日期请输入(格式例如:2012-11-08 14:24:54或着2012-11-08)");  
      22.             System.out.println("########################################");  
      23.             String endDate = s.nextLine();  
      24.             DateTime endDateTime = null;  
      25.             try{  
      26.                 endDateTime = DateTime.parse(endDate,format1);  
      27.             }catch(Exception e){  
      28.                 try{  
      29.                     endDateTime = DateTime.parse(endDate,format2);  
      30.                 }catch(Exception e1){  
      31.                     System.out.println("输入格式错误!请重新输入.");  
      32.                     continue;  
      33.                 }  
      34.             }  
      35.             System.out.println("宝宝从出生到" + endDateTime.toString("yyyy-MM-dd HH:mm:ss") + "已经");  
      36.             calDateToDay(startDateTime,endDateTime);  
      37.         }  
      38.     }  
      39.       
      40.     public static void calDateToDay(DateTime startDateTime,DateTime endDateTime){  
      41.           
      42.          LocalDate start=new LocalDate(startDateTime);    
      43.         LocalDate end=new LocalDate(endDateTime);  
      44.         Days days = Days.daysBetween(start, end);  
      45.         int intervalDays = days.getDays();  
      46.         int intervalHours = endDateTime.getHourOfDay() - startDateTime.getHourOfDay();  
      47.         int intervalMinutes = endDateTime.getMinuteOfHour() - startDateTime.getMinuteOfHour();  
      48.         int intervalSeconds = endDateTime.getSecondOfMinute() - startDateTime.getSecondOfMinute();  
      49.           
      50.           
      51.         if(intervalSeconds < 0){  
      52.             intervalMinutes = intervalMinutes -1;  
      53.             intervalSeconds = 60 + intervalSeconds;  
      54.         }  
      55.           
      56.         if(intervalMinutes < 0){  
      57.             intervalHours = intervalHours -1;  
      58.             intervalMinutes = 60 + intervalMinutes;  
      59.         }  
      60.           
      61.         if(intervalHours < 0){  
      62.             intervalDays = intervalDays -1;  
      63.             intervalHours = 24 + intervalHours;  
      64.         }  
      65.                   
      66.         System.out.println(intervalDays + "天" + intervalHours +   
      67.                 "小时" + intervalMinutes + "分钟" + intervalSeconds + "秒");  
      68.         System.out.println("############################");  
      69.     }  
      70.   
      71. }  
  • 相关阅读:
    JavaFX 新WebService客户端脚本语言
    了解 Java EE 5
    JavaFX FAQ
    JBoss,Geronimo还是Tomcat?——三种开源Java应用服务器的比较
    JavaFX 新WebService客户端脚本语言
    JavaFX编程语言
    JBoss,Geronimo还是Tomcat?——三种开源Java应用服务器的比较
    CCIE路由实验(1) BGP的基本配置
    使用PyXLL在Excel中执行Python脚本
    Welcome — PyXLL: Python Excel Addins
  • 原文地址:https://www.cnblogs.com/jtlgb/p/8205777.html
Copyright © 2020-2023  润新知