<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.6</version>
</dependency>
Home:http://joda-time.sourceforge.net/

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

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

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

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

     package com.yan.joda;  

     import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter; public class JodaTest { public static void main(String[] args) {
//初始化时间
DateTime dateTime=new DateTime(2012, 12, 13, 18, 23,55); // 年,月,日,时,分,秒,毫秒
DateTime dt3 = new DateTime(2011, 2, 13, 10, 30, 50, 333);// 2010年2月13日10点30分50秒333毫秒 //下面就是按照一点的格式输出时间
String str2 = dateTime.toString("MM/dd/yyyy hh:mm:ss.SSSa");
String str3 = dateTime.toString("dd-MM-yyyy HH:mm:ss");
String str4 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");
String str5 = dateTime.toString("MM/dd/yyyy HH:mm ZZZZ");
String str6 = dateTime.toString("MM/dd/yyyy HH:mm Z"); DateTimeFormatter format = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");
//时间解析
DateTime dateTime2 = DateTime.parse("2012-12-21 23:22:45", format); //时间格式化,输出==> 2012/12/21 23:22:45 Fri
String string_u = dateTime2.toString("yyyy/MM/dd HH:mm:ss EE");
System.out.println(string_u); //格式化带Locale,输出==> 2012年12月21日 23:22:45 星期五
String string_c = dateTime2.toString("yyyy年MM月dd日 HH:mm:ss EE",Locale.CHINESE);
System.out.println(string_c); DateTime dt1 = new DateTime();// 取得当前时间 // 根据指定格式,将时间字符串转换成DateTime对象,这里的格式和上面的输出格式是一样的
DateTime dt2 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("2012-12-26 03:27:39"); //计算两个日期间隔的天数
LocalDate start=new LocalDate(2012, 12,14);
LocalDate end=new LocalDate(2013, 01, 15);
int days = Days.daysBetween(start, end).getDays(); //计算两个日期间隔的小时数,分钟数,秒数 //增加日期
DateTime dateTime1 = DateTime.parse("2012-12-03");
dateTime1 = dateTime1.plusDays(30);
dateTime1 = dateTime1.plusHours(3);
dateTime1 = dateTime1.plusMinutes(3);
dateTime1 = dateTime1.plusMonths(2);
dateTime1 = dateTime1.plusSeconds(4);
dateTime1 = dateTime1.plusWeeks(5);
dateTime1 = dateTime1.plusYears(3); // Joda-time 各种操作.....
dateTime = dateTime.plusDays(1) // 增加天
.plusYears(1)// 增加年
.plusMonths(1)// 增加月
.plusWeeks(1)// 增加星期
.minusMillis(1)// 减分钟
.minusHours(1)// 减小时
.minusSeconds(1);// 减秒数
.minusMonths(2);// 减月
//判断是否闰月
DateTime dt4 = new DateTime();
org.joda.time.DateTime.Property month = dt4.monthOfYear();
System.out.println("是否闰月:" + month.isLeap()); //取得 3秒前的时间
DateTime dt5 = dateTime1.secondOfMinute().addToCopy(-3);
dateTime1.getSecondOfMinute();// 得到整分钟后,过的秒钟数
dateTime1.getSecondOfDay();// 得到整天后,过的秒钟数
dateTime1.secondOfMinute();// 得到分钟对象,例如做闰年判断等使用 // DateTime与java.util.Date对象,当前系统TimeMillis转换
DateTime dt6 = new DateTime(new Date());
Date date = dateTime1.toDate();
DateTime dt7 = new DateTime(System.currentTimeMillis());
dateTime1.getMillis(); Calendar calendar = Calendar.getInstance();
dateTime = new DateTime(calendar);
}
} 下面是一个小例子用来计算小宝宝从出生到现在总共的天数小时数等,首先用jdk的类去做,不用joda,然后再用joda去做,以做比较 用jdk做的例子,这里算的从出生到现在的时间间隔是准确的,如果是输入的某天来算的话就不是很准确,多一秒就算一天。可以看到用jdk去做的话,要写的代码还是挺繁琐的。 import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner; public class CalBaby {
private final static String birthday = "2012-3-10 08:20:55";
/**
* @param args
*/
public static void main(String[] args) {
while(true){
String format1 = "yyyy-MM-dd";
String format2 = "yyyy-MM-dd HH:mm:ss";
Scanner s = new Scanner(System.in);
System.out.println("########################################");
cutTwoDateToDay(convertToDate1(birthday,format2),new Date(),false);
System.out.println("请选择操作");
System.out.println("请输入日期(格式例如:2012-11-08)");
System.out.println("########################################");
String endDateStr = s.nextLine();
Date endDate = convertToDate1(endDateStr,format1);
if(endDate == null){
System.out.println("输入格式错误!请重新输入.");
continue;
}
boolean inputFlag = true;
cutTwoDateToDay(convertToDate1(birthday,format2),endDate,inputFlag);
} } /**
* 计算两个日期之间的差距天数
*
* @param a
* @param b
* @return
*/
public static void cutTwoDateToDay(Date beginDate, Date endDate,boolean inputFlag) {
Calendar calendar = Calendar.getInstance();
long intervalDays = 0;
calendar.setTime(beginDate);
long begin = calendar.getTimeInMillis();
calendar.setTime(endDate);
long end = calendar.getTimeInMillis();
long totalM = end - begin;
System.out.println((end -begin));
System.out.println(24*60*60*1000);
intervalDays = totalM /(24*60*60*1000);
long intervalHours = (totalM - (intervalDays*24*60*60*1000))/(60*60*1000);
long intervalMin = (totalM - intervalDays * (24*60*60*1000) - intervalHours*60*60*1000)/(60*1000);
if(inputFlag){
if(totalM > 0L && totalM %(24*60*60*1000) > 0L){
intervalDays = intervalDays + 1;
}
System.out.println("宝宝从出生到"+formatDate(endDate,"yyyy-MM-dd")+"已经"+intervalDays+"天了");
}else{
System.out.println("宝宝来到这个世界已经"+intervalDays+"天"+intervalHours+"小时"+intervalMin+"分钟了");
} } /**
* 将字符串日期转换为Date yyyy-MM-dd HH:mm:ss yyyy-MM-dd
*
* @param s
* @return
*/
public static Date convertToDate1(String s,String format) { if (s == null) {
return null;
}
try {
SimpleDateFormat df = new SimpleDateFormat(format);
return df.parse(s);
} catch (Exception e) {
return null;
}
} public static String formatDate(Date date, String strType)
{
if (date == null)
{
return null;
} SimpleDateFormat sdf = new SimpleDateFormat(strType);
try
{
return sdf.format(date);
}
catch (Exception e)
{
return null;
}
}
} 下面是用joda来做,用这个来做就简单的多了,而且也很准确。 Java代码 收藏代码 import java.util.Scanner;
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter; public class CalBabyJoda { private final static String birthday = "2012-3-10 08:20:55"; public static void main(String[] args) {
while(true){
Scanner s = new Scanner(System.in);
System.out.println("########################################");
DateTimeFormatter format1 = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter format2 = DateTimeFormat .forPattern("yyyy-MM-dd");
DateTime startDateTime = DateTime.parse(birthday, format1);
System.out.println("宝宝来到这个世界已经");
calDateToDay(startDateTime,new DateTime());
System.out.println("如选择其它日期请输入(格式例如:2012-11-08 14:24:54或着2012-11-08)");
System.out.println("########################################");
String endDate = s.nextLine();
DateTime endDateTime = null;
try{
endDateTime = DateTime.parse(endDate,format1);
}catch(Exception e){
try{
endDateTime = DateTime.parse(endDate,format2);
}catch(Exception e1){
System.out.println("输入格式错误!请重新输入.");
continue;
}
}
System.out.println("宝宝从出生到" + endDateTime.toString("yyyy-MM-dd HH:mm:ss") + "已经");
calDateToDay(startDateTime,endDateTime);
}
} public static void calDateToDay(DateTime startDateTime,DateTime endDateTime){ LocalDate start=new LocalDate(startDateTime);
LocalDate end=new LocalDate(endDateTime);
Days days = Days.daysBetween(start, end);
int intervalDays = days.getDays();
int intervalHours = endDateTime.getHourOfDay() - startDateTime.getHourOfDay();
int intervalMinutes = endDateTime.getMinuteOfHour() - startDateTime.getMinuteOfHour();
int intervalSeconds = endDateTime.getSecondOfMinute() - startDateTime.getSecondOfMinute(); if(intervalSeconds < 0){
intervalMinutes = intervalMinutes -1;
intervalSeconds = 60 + intervalSeconds;
} if(intervalMinutes < 0){
intervalHours = intervalHours -1;
intervalMinutes = 60 + intervalMinutes;
} if(intervalHours < 0){
intervalDays = intervalDays -1;
intervalHours = 24 + intervalHours;
} System.out.println(intervalDays + "天" + intervalHours +
"小时" + intervalMinutes + "分钟" + intervalSeconds + "秒");
System.out.println("############################");
} }

jodaTime 的使用说明的更多相关文章

  1. JavaUtil_10_joda-time_用法入门

    二.参考资料 1. Joda-Time 2.jodaTime 的使用说明 3.强大易用的日期和时间库 Joda Time

  2. Atitit.项目修改补丁打包工具 使用说明

    Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...

  3. 计算机程序的思维逻辑 (33) - Joda-Time

    Joda-Time上节介绍了JDK API中的日期和时间类,我们提到了JDK API的一些不足,并提到,实践中有一个广泛使用的日期和时间类库,Joda-Time,本节我们就来介绍Joda-Time.俗 ...

  4. awk使用说明

    原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...

  5. “我爱背单词”beta版发布与使用说明

    我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院  拒 ...

  6. Oracle 中 union 和union all 的简单使用说明

    1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...

  7. Map工具系列-02-数据迁移工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  8. Map工具系列-03-代码生成BySQl工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  9. jQuery验证控件jquery.validate.js使用说明

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

随机推荐

  1. 【iCore3 双核心板】例程三十三:SD_IAP_ARM实验——更新升级STM32

    实验指导书及代码包下载: http://pan.baidu.com/s/1jHmvQfk iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  2. win7安装virtualbox遇到的问题

    今天用台式机的时候想装个virtualbox跑centos做测试用,结果centos始终装不上,vbox一直提示无法开启任务.重装vbox,以及手动点击安装xxx.inf文件,都不行. 以前用的win ...

  3. principal-component-analysis

    http://support.minitab.com/en-us/minitab/17/topic-library/modeling-statistics/multivariate/principal ...

  4. xx.substring(x,x)和xx.index()

    [转的]用一个例子解释: ip = "126.168.1.1"; i = ip.indexOf('.');                           这里默认从0开始找到 ...

  5. Android如何连接MySQL数据库

    Android开发中,大多数连接到远程MySQL数据库的方法是加入特定的Service到代码中.由于MySQL通常是和PHP一起使用的,最简单以及最常见的方法是写PHP脚本管理数据连接,以及从Andr ...

  6. AFNetworking 3.0+ 启用完整、严格的https证书较验参考代码

    // 1.初始化单例类      AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];     manager.securit ...

  7. Android 自定义spinner下拉框实现的实现

    请支持原创:http://blog.csdn.NET/geniuseoe2012/article/details/8723702 说到Android下拉框spineer,框架中虽有现成的控件,但实际效 ...

  8. 淘宝开放平台Session Key有效期

    各标签session时长及RefreshToken失效时长  *Refresh失效时长为0,即该sessionkey不可刷新. 标签 授权时长 Refresh失效时长 商家后台应用 固定时长1年 0 ...

  9. 浏览器浏览记忆(history)几则技巧记录

    一般浏览记录模式 假设有三个页面, start.html, 通过点击start.html上的链接跳转到 first.html, 然后点击first.html上链接跳转到 second.html, 那么 ...

  10. Java基础之扩展GUI——添加状态栏(Sketcher 1 with a status bar)

    控制台程序. 为了显示各个应用程序参数的状态,并且将各个参数显示在各自的面板中,在应用程序窗口的底部添加状态栏是常见且非常方便的方式. 定义状态栏时没有Swing类可用,所以必须自己建立StatusB ...