博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jodaTime 的使用说明
阅读量:5333 次
发布时间:2019-06-15

本文共 13460 字,大约阅读时间需要 44 分钟。

1 
2
joda-time
3
joda-time
4
2.6
5

 

Home:JavaDoc:
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         }

 

转载于:https://www.cnblogs.com/cb0327/p/5127507.html

你可能感兴趣的文章
JS性能DOM优化
查看>>
设计模式 单例模式 使用模板及智能指针
查看>>
c#的const可以用于引用类型吗
查看>>
手动实现二值化
查看>>
What Linux bind mounts are really doing
查看>>
linux top命令详解
查看>>
博弈论小结
查看>>
模拟Post登陆带验证码的网站
查看>>
NYOJ458 - 小光棍数
查看>>
java中常用方法
查看>>
【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
查看>>
canvas动画
查看>>
4,7周围玩家
查看>>
关于webpack升级过后不能打包的问题;
查看>>
vue - 生命周期
查看>>
SQL Server用户权限详解
查看>>
Python正则表达式
查看>>
Linux进程间通信--命名管道
查看>>
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>