joda-time的使用
值得一提的是该功能被整合到Java 8 中 ,被称为java8 新特新之一 。这意味着不用到包
<!-- 时间操作组件 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
</dependency>
不过下面的代码写的更清楚一点
来自:http://ylq365.iteye.com/blog/1769680
joda-time的使用
博客分类:
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(, , , , ,); // 年,月,日,时,分,秒,毫秒
DateTime dt3 = new DateTime(, , , , , , );// 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(, ,);
LocalDate end=new LocalDate(, , );
int days = Days.daysBetween(start, end).getDays(); //计算两个日期间隔的小时数,分钟数,秒数 //增加日期
DateTime dateTime1 = DateTime.parse("2012-12-03");
dateTime1 = dateTime1.plusDays();
dateTime1 = dateTime1.plusHours();
dateTime1 = dateTime1.plusMinutes();
dateTime1 = dateTime1.plusMonths();
dateTime1 = dateTime1.plusSeconds();
dateTime1 = dateTime1.plusWeeks();
dateTime1 = dateTime1.plusYears(); // Joda-time 各种操作.....
dateTime = dateTime.plusDays() // 增加天
.plusYears()// 增加年
.plusMonths()// 增加月
.plusWeeks()// 增加星期
.minusMillis()// 减分钟
.minusHours()// 减小时
.minusSeconds();// 减秒数 //判断是否闰月
DateTime dt4 = new DateTime();
org.joda.time.DateTime.Property month = dt4.monthOfYear();
System.out.println("是否闰月:" + month.isLeap()); //取得 3秒前的时间
DateTime dt5 = dateTime1.secondOfMinute().addToCopy(-);
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去做的话,要写的代码还是挺繁琐的。
Java代码 收藏代码 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 = ;
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(***);
intervalDays = totalM /(***);
long intervalHours = (totalM - (intervalDays****))/(**);
long intervalMin = (totalM - intervalDays * (***) - intervalHours***)/(*);
if(inputFlag){
if(totalM > 0L && totalM %(***) > 0L){
intervalDays = intervalDays + ;
}
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来做,用这个来做就简单的多了,而且也很准确。
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 < ){
intervalMinutes = intervalMinutes -;
intervalSeconds = + intervalSeconds;
} if(intervalMinutes < ){
intervalHours = intervalHours -;
intervalMinutes = + intervalMinutes;
} if(intervalHours < ){
intervalDays = intervalDays -;
intervalHours = + intervalHours;
} System.out.println(intervalDays + "天" + intervalHours +
"小时" + intervalMinutes + "分钟" + intervalSeconds + "秒");
System.out.println("############################");
} }
joda-time的使用的更多相关文章
- [Java]Java日期及时间库插件 -- Joda Time.
来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处 ...
- joda jar日期处理类的学习
转载:http://www.open-open.com/lib/view/open1348032952724.html 任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点, ...
- Scala - 处理时间(nscala-time - Joda Time的scala封装)
GITHUB : https://github.com/nscala-time/nscala-time MAVEN : (注意选对scala版本) <dependency> <gro ...
- 解决java.lang.NoSuchMethodError:org.joda.time.DateTime.withTimeAtStartOfDay() Lorg/joda/time/DateTime
问题:项目放在weblogic运行,报错 java.lang.NoSuchMethodError: org.joda.time.DateTime.withTimeAtStartOfDay()Lorg/ ...
- org.joda.time.DateTime 日期格式
最近一直在使用Java,偶尔一次遇到日期(util)的格式转换,心里还是规矩的写着记忆里面的代码,但是在自己测试的时候发现不正确,具体看了下代码,发现这里使用jota的方式编写,顺道查了一下,做了笔记 ...
- joda time, jackson 与 scala 反射
1. scala 反射,获得所有 field name 可以直接从 case class 获得 field 而不必创建实例 (get fields of a class without an inst ...
- Java-小技巧-004-jdk时间,jdk8时间,joda,calendar,获取当前时间前一周、前一月、前一年的时间
1.推荐使用java8 localdate等 线程安全 支持较好 地址 2.joda 一.简述 查看SampleDateFormat源码,叙述有: * Date formats are not syn ...
- 抛java.lang.NoClassDefFoundError: org.joda.time.ReadablePeriod错误
转自:http://www.codeorg.cn/article/detail/qa/542 在进行activiti环境搭建时总是抛出java.lang.NoClassDefFoundError: o ...
- [原创]Spring Boot + Mybatis 简易使用指南(二)多参数方法支持 与 Joda DateTime类型支持
前言 今天在开发练习项目时遇到两个mybatis使用问题 第一个问题是mapper方法参数问题,在参数大于一个时,mybatis不会自动识别参数命名 第二个问题是Pojo中使用Joda DateTim ...
- Joda Time 使用
Joda Time 使用 对于系统的一些时间操作很是不方便,为了方便转化,有时候用date,有时候用timestmp,有时候用calendar,忍不住想更改了. 但是任务巨大,先把笔记收藏了,后面有机 ...
随机推荐
- Linux命令详解-install
install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户. 1.命令格式: (1)install [选项]... 来源 目的地 (2)install [选项]... 来源... 目录 ...
- Spring MVC 实现跨域资源 CORS 请求
说到 AJAX 跨域,很多人最先想到的是 JSONP.的确,JSONP 我们已经十分熟悉,也使用了多年,从本质上讲,JSONP 的原理是给页面注入一个 <script>,把远程 JavaS ...
- 048——VUE中使用animate.css动画库控制vue.js过渡效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Thinking in Java之衍生类和基础类的初始化顺序
<Thinking in Java>书里的例子,我又稍微修改了下代码: class Real{ public Real(String index) { // TODO Auto-gener ...
- SSRS 在订阅的时候,在头值中找到无效的字符。将不重新发送邮件
在头值中找到无效的字符.将不重新发送邮件 SSRS 在订阅的时候,在头值中找到无效的字符.将不重新发送邮件! 查看了一下,只要是发送文件类型的都不可以,改成HTML的就可以.然后重新把RS的报表文件友 ...
- Locust 介绍篇
Locust介绍: Locust作为基于Python语言的性能测试框架. 其优点在于他的并发量可以实现单机10倍于LoadRunner和Jmeter工具.他的工作原理为协程并发,也就是gevent库. ...
- java第十次面试题
一.给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数. public static void ...
- 重新学习之spring第二个程序,配置AOP面向切面编程
第一步:在配置好的ioc容器的基础上,导入面向切面编程所需要的jar包 (本案例用的是spring3.2.4,由于spring3.2.4的官网jar包中不再有依赖包,所以依赖包都是从网上找的) 第二步 ...
- ballerina 学习二十二 弹性服务
主要包含断路器模式,负载均衡模式,故障转移,重试 Circuit Breaker 参考代码 import ballerina/http; import ballerina/log; import ba ...
- nexus 使用Raw Repositories 进行maven site 发布
实际项目中我们可能需要进行maven 项目的site 文档发布,一般的处理是生成之后,然后在进行发布到一个静态 服务器进行页面访问,nexus3 提供了一个Raw Repositories 很方便可以 ...