`
tangzongyun
  • 浏览: 183762 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java开源时间框架joda-time 转

    博客分类:
  • Java
阅读更多
maven依赖:
官方地址:http://www.joda.org/joda-time/

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.9.2</version>
</dependency>

package com.date;

import java.text.ParseException;
import java.util.Date;

import org.joda.time.DateTime;
import org.joda.time.DateTimeConstants;
import org.joda.time.DateTimeZone;
import org.joda.time.Days;
import org.joda.time.Duration;
import org.joda.time.Hours;
import org.joda.time.Interval;
import org.joda.time.LocalDate;
import org.joda.time.LocalTime;
import org.joda.time.Minutes;
import org.joda.time.Period;
import org.joda.time.PeriodType;
import org.joda.time.Seconds;
import org.junit.Test;

public class JodaTimeTest {

@Test
// 计算时间差
public void test1() throws ParseException {
DateTime dt1 = new DateTime(2016, 2, 14, 16, 0, 0, 0);
DateTime dt2 = new DateTime(2016, 2, 15, 16, 0, 0, 0);
System.out.print("时间相差:");
System.out.print(Days.daysBetween(dt1, dt2).getDays() + " 天 ");
System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " 小时 ");
System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60
+ " 分钟 ");
System.out.print(Seconds.secondsBetween(dt1, dt2).getSeconds() % 60
+ " 秒.");
System.out.println();
}

@Test
// Interval计算时间差值
public void test2() {
DateTime dt1 = new DateTime(2016, 2, 14, 16, 0, 0, 0);
DateTime dt2 = new DateTime(2016, 2, 15, 16, 0, 0, 0);
Interval interval = new Interval(dt1.getMillis(), dt2.getMillis());
Period p = interval.toPeriod();
System.out.println("时间相差:" + p.getDays() + " 天 " + p.getHours()
+ " 小时 " + p.getMinutes() + " 分钟" + p.getSeconds() + " 秒");
}

@Test
// 日期前后推算
public void test3() {
DateTime dt = new DateTime();
// 昨天
DateTime yesterday = dt.minusDays(1);
// 明天
DateTime tomorrow = dt.plusDays(1);
// 1个月前
DateTime before1month = dt.minusMonths(1);
// 3个月后
DateTime after3month = dt.plusMonths(3);
// 2年前
DateTime before2year = dt.minusYears(2);
// 5年后
DateTime after5year = dt.plusYears(5);
}

@Test
// 构造函数
public void test4() {
// 方法一:取系统点间
DateTime dt1 = new DateTime();

// 方法二:通过java.util.Date对象生成
DateTime dt2 = new DateTime(new Date());

// 方法三:指定年月日点分秒生成(参数依次是:年,月,日,时,分,秒,毫秒)
DateTime dt3 = new DateTime(2012, 5, 20, 13, 14, 0, 0);

// 方法四:ISO8601形式生成
DateTime dt4 = new DateTime("2012-05-20");
DateTime dt5 = new DateTime("2012-05-20T13:14:00");

// 只需要年月日的时候
LocalDate localDate = new LocalDate(2016, 9, 6);// September 6, 2009

// 只需要时分秒毫秒的时候
LocalTime localTime = new LocalTime(13, 30, 26, 0);// 1:30:26PM
}

@Test
// 获取年月日星期,点分秒,毫秒
public void test5() {
DateTime dt = new DateTime();
// 年
int year = dt.getYear();
// 月
int month = dt.getMonthOfYear();
// 日
int day = dt.getDayOfMonth();
// 星期
int week = dt.getDayOfWeek();
// 点
int hour = dt.getHourOfDay();
// 分
int min = dt.getMinuteOfHour();
// 秒
int sec = dt.getSecondOfMinute();
// 毫秒
int msec = dt.getMillisOfSecond();

}

@Test
// 星期的特殊处理
public void test6() {
DateTime dt = new DateTime();

// 星期
switch (dt.getDayOfWeek()) {
case DateTimeConstants.SUNDAY:
System.out.println("星期日");
break;
case DateTimeConstants.MONDAY:
System.out.println("星期一");
break;
case DateTimeConstants.TUESDAY:
System.out.println("星期二");
break;
case DateTimeConstants.WEDNESDAY:
System.out.println("星期三");
break;
case DateTimeConstants.THURSDAY:
System.out.println("星期四");
break;
case DateTimeConstants.FRIDAY:
System.out.println("星期五");
break;
case DateTimeConstants.SATURDAY:
System.out.println("星期六");
break;
}
}

@Test
// 取特殊日期
public void test7() {
DateTime dt = new DateTime();

// 月末日期
DateTime lastday = dt.dayOfMonth().withMaximumValue();

// 90天后那周的周一
DateTime firstday = dt.plusDays(90).dayOfWeek().withMinimumValue();
}

@Test
// 时区
public void test8() {
// 默认设置为日本时间
DateTimeZone.setDefault(DateTimeZone.forID("Asia/Tokyo"));
DateTime dt1 = new DateTime();

// 伦敦时间
DateTime dt2 = new DateTime(DateTimeZone.forID("Europe/London"));
}

@Test
// 计算区间
public void test9() {
DateTime begin = new DateTime("2012-02-01");
DateTime end = new DateTime("2012-05-01");

// 计算区间毫秒数
Duration d = new Duration(begin, end);
long time = d.getMillis();

// 计算区间天数
Period p = new Period(begin, end, PeriodType.days());
int days = p.getDays();

// 计算特定日期是否在该区间内
Interval i = new Interval(begin, end);
boolean contained = i.contains(new DateTime("2012-03-01"));
}

@Test
// 计算区间
public void test10() {
DateTime d1 = new DateTime("2012-02-01");
DateTime d2 = new DateTime("2012-05-01");

// 和系统时间比
boolean b1 = d1.isAfterNow();
boolean b2 = d1.isBeforeNow();
boolean b3 = d1.isEqualNow();

// 和其他日期比
boolean f1 = d1.isAfter(d2);
boolean f2 = d1.isBefore(d2);
boolean f3 = d1.isEqual(d2);
}

@Test
// 格式化输出
public void test11() {
DateTime dateTime = new DateTime();
String s1 = dateTime.toString("yyyy/MM/dd hh:mm:ss.SSSa");
String s2 = dateTime.toString("yyyy-MM-dd HH:mm:ss");
String s3 = dateTime.toString("EEEE dd MMMM, yyyy HH:mm:ssa");
String s4 = dateTime.toString("yyyy/MM/dd HH:mm ZZZZ");
String s5 = dateTime.toString("yyyy/MM/dd HH:mm Z");
}

}
分享到:
评论

相关推荐

    joda-time-2.5.zip

    Joda-Time是一款开源的Java日期和时间处理库,由Stephen Colebourne创建,旨在替换Java SE 1.4及之前的日期时间API。它提供了一个更强大、更灵活的框架,便于处理复杂的日期、时间、时区问题。Joda-Time 2.5是其一个...

    Joda-Money-用于表示货币金额的Java库

    Joda-Money可以与其他Java库如Joda-Time(日期时间处理)配合使用,为金融应用提供完整的解决方案。例如,结合两者可以轻松计算跨越多个日期的利息。 ### 9. 最新版本特性 在JodaOrg-joda-money-bb2d8c0这个版本中...

    joda-time-2.4-dist.zip

    综上所述,"joda-time-2.4-dist.zip"可能是在准备一个大数据处理环境时,为了增强日期时间处理能力而包含的库。它与Hadoop和Hive一起,构成了处理和分析大量时间序列数据的工具链。了解并熟练掌握这些技术,对于从事...

    sfm-converter-joda-time-3.0.b1.zip

    结合这些知识点,"sfm-converter-joda-time-3.0.b1.zip"可能是将Joda-Time日期和时间数据转换为LAPPS Grid兼容格式的工具,其源代码存在于"org.lappsgrid.discriminator-master"目录下,遵循开源原则,允许开发者...

    spark-assembly.jar,joda-time.jar.jfreechart.jar,jcommon.jar

    2. `joda-time.jar`:Joda-Time是Java的一个日期和时间处理库,它提供了比Java内置的`java.util.Date`和`Calendar`类更强大和灵活的功能。在Spark中,Joda-Time可能用于处理和解析时间序列数据,或者在处理涉及日期...

    bb4-predprey-1.1.2.zip

    predprey-1.1.2.zip”和描述“composite-joda-time-hibernate.zip,标准jodatime hibernate依赖项的集合”揭示了两个不同的IT知识点,一个是关于生态模拟软件,另一个是关于Java日期时间处理与Hibernate集成的开源库...

    spring-data-hadoop-1.0.1.RELEASE.zip

    《Spring Data Hadoop 1.0.1.RELEASE与Joda-Time: 秒表对象的使用及开源项目解析》 Spring Data Hadoop是Spring框架的一部分,它为开发人员提供了一种简单的方式来使用Hadoop生态系统的组件,如HDFS、MapReduce和...

    thucydides-jbehave-plugin-0.9.20.zip

    从压缩包子文件的文件名称"scala-time-master"来看,这可能包含了Scala-Time项目的主分支源代码。通常,"master"分支代表了项目的主线开发,包含了最新的稳定代码。 详细来说,Thucydides JBehave插件的主要知识点...

    jodd-log-3.6.5-BETA1.zip

    【描述】"ph-datetime.zip,基于joda时间的java日期时间库基于joda时间的java日期时间库" 描述的是一个与 Joda-Time 相关的 Java 日期和时间处理库。Joda-Time 是 Java 8 之前的日期时间处理标准,它提供了一种更强大...

    java test jars

    总结起来,"java test jars"这个主题涵盖了Java开发中的核心测试工具,包括单元测试框架JUnit及其扩展,时间处理库Joda-Time,日志库Log4j,以及Java标准库的某些部分。这些工具的使用能够提高代码质量,降低缺陷率...

    skinny-thymeleaf_2.11-1.3.0.zip

    在压缩包中的"nscala-time-master"可能是指nscala-time项目的源代码仓库,通常包含项目的所有源代码、测试、文档和构建脚本。如果你解压并克隆这个仓库,你可以看到项目的结构,了解其内部实现,甚至可以根据自己的...

    Funambol 编译

    1. joda-time-1.6.jar:这是一个时间日期处理库,Joda-Time,它提供了比Java内置日期时间类更强大和灵活的功能。在Funambol中,可能被用作日期和时间的处理。 2. funambol-android-pim.jar:这是Funambol为Android...

    开源框架jar包(百度云盘)

     · joda-time-2.3-dist.zip  · jfreechart-1.0.13-javadocs.zip  · jfreechart-1.0.13.zip  · jdom-1.1.zip  · javamail-1_4_1.zip  · jakarta-taglibs-standard-1.1.2-src.zip  · jakarta-taglibs-...

    spring定时任务必须要的10个jar包.zip

    在Java开发中,Spring框架是广泛应用的开源框架,它提供了丰富的功能,包括但不限于依赖注入、AOP(面向切面编程)、MVC等。而在企业级应用中,定时任务是不可或缺的一部分,例如数据备份、报表生成、邮件发送等。...

    activiti工作流开发jar包43个

    6. `joda-time-2.1.jar`: Joda-Time是Java日期和时间处理的库,提供更强大的功能和更好的API。Activiti可能使用它来处理与日期和时间相关的业务逻辑。 7. `jackson-mapper-asl-1.9.9-sources.jar`: Jackson是JSON...

    Java常用工具类

    - `Joda-Time`:Java 8之前的流行日期时间库,已被许多项目广泛采用。 - `SLF4J`和`Logback`:日志记录框架,提供灵活的日志配置和多种日志实现的适配。 - `Jackson`和`Gson`:JSON序列化和反序列化库,将Java...

    memcached session manager 1.9.6 适用于 tomcat 8 各版本 支持kryo等多种序列化方式

    1. **msm-joda-time-2.9.2.jar**: 包含Joda-Time库,它是一个强大的日期和时间处理库,可能用于处理会话的过期时间。 2. **msm-xstream-1.4.7.jar**: 提供XStream库,这是一个XML序列化库,可能作为另一种序列化...

Global site tag (gtag.js) - Google Analytics