`
weitao1026
  • 浏览: 1054001 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DATE4J 日期和时间操作的Java工具

阅读更多
、Date and its subclasses:

java.util.Date
java.sql.Date
java.sql.Timestamp

2、The calendar and time zone classes:
java.util.Calendar
java.util.GregorianCalendar
java.util.TimeZone
java.util.SimpleTimeZone //(for use with the Gregorian calendar only)

3、The formatting and parsing classes:

java.text.DateFormat
java.text.SimpleDateFormat
java.text.DateFormatSymbols

这些处理起来是非常之烦的。如果用DATE4J处理就容易很多了。例子如下:

package hirondelle.date4j;

import java.util.Locale;
import java.util.TimeZone;

/** Examples of how to use date4j. */
public final class Examples {
  public static void main(String... aArgs){
    Examples examples = new Examples();
    examples.currentDateTime();
    examples.currentDateTimeInCairo();
    examples.ageIfBornOnCertainDate();
    examples.optionsExpiry();
    examples.daysTillChristmas();
    examples.whenIs90DaysFromToday();
    examples.whenIs3Months5DaysFromToday();
    examples.hoursDifferenceBetweenParisAndPerth();
    examples.weeksSinceStart();
    examples.timeTillMidnight();
    examples.imitateISOFormat();
    examples.firstDayOfThisWeek();
    examples.jdkDatesSuctorial();
  }
  
  // PRIVATE
  
  private static void log(Object aMsg){
    System.out.println(String.valueOf(aMsg));
  }
  
  /** What is the current date-time in the JRE's default time zone? */
  private void currentDateTime(){
    DateTime now = DateTime.now(TimeZone.getDefault());
    String result = now.format("YYYY-MM-DD hh:mm:ss");
    log("Current date-time in default time zone : " + result);
  }
  
  /** What is the current date-time in Cairo (include weekday)? */
  private void currentDateTimeInCairo(){
    DateTime now = DateTime.now(TimeZone.getTimeZone("Africa/Cairo"));
    String result = now.format("YYYY-MM-DD hh:mm:ss (WWWW)", Locale.getDefault());
    log("Current date-time in Cairo : " + result);
  }
  
  /** What's the age of someone born May 16, 1995? */
  private void ageIfBornOnCertainDate(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    DateTime birthdate = DateTime.forDateOnly(1995, 5, 16);
    int age = today.getYear() - birthdate.getYear();
    if(today.getDayOfYear() < birthdate.getDayOfYear()){
      age = age - 1;
    }
    log("Age of someone born May 16, 1995 is : " + age);
  }
  
  /** Stock options expire on the 3rd Friday of this month. What day of the month is that? */
  private void optionsExpiry(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    DateTime firstOfMonth = today.getStartOfMonth();
    int result = 0;
    if (firstOfMonth.getWeekDay() == 7){
      result = 21;
    }
    else {
       result = 21 - firstOfMonth.getWeekDay();
    }
    DateTime thirdFriday = DateTime.forDateOnly(firstOfMonth.getYear(), firstOfMonth.getMonth(), result);
    log("The 3rd Friday of this month is : " + thirdFriday.format("YYYY-MM-DD"));
  }
  
  /** How many days till the next December 25? */
  private void daysTillChristmas(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    DateTime christmas = DateTime.forDateOnly(today.getYear(), 12, 25);
    int result = 0;
    if(today.isSameDayAs(christmas)){
      // do nothing
    }
    else if (today.lt(christmas)){
      result = today.numDaysFrom(christmas);
    }
    else if (today.gt(christmas)){
      DateTime christmasNextYear = DateTime.forDateOnly(today.getYear() + 1, 12, 25);
      result = today.numDaysFrom(christmasNextYear);
    }
    log("Number of days till Christmas : " + result);
  }
  
  /** What day is 90 days from today? */
  private void whenIs90DaysFromToday(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    log("90 days from today is : " + today.plusDays(90).format("YYYY-MM-DD"));
  }

  /** What day is 3 months and 5 days from today? */
  private void whenIs3Months5DaysFromToday(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    DateTime result = today.plus(0,3,5,0,0,0,0,DateTime.DayOverflow.FirstDay);
    log("3 months and 5 days from today is : " + result.format("YYYY-MM-DD"));
  }
  
  /** Current number of hours difference between Paris, France and Perth, Australia. */
  private void hoursDifferenceBetweenParisAndPerth(){
    //this assumes the time diff is a whole number of hours; other styles are possible
    DateTime paris = DateTime.now(TimeZone.getTimeZone("Europe/Paris"));
    DateTime perth = DateTime.now(TimeZone.getTimeZone("Australia/Perth"));
    int result = perth.getHour() - paris.getHour();
    if( result < 0 ) {
      result = result + 24;
    }
    log("Numbers of hours difference between Paris and Perth : " + result);
  }
  
  /** How many weeks is it since Sep 6, 2010? */
  private void weeksSinceStart(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    DateTime startOfProject = DateTime.forDateOnly(2010, 9, 6);
    int result = today.getWeekIndex() - startOfProject.getWeekIndex();
    log("The number of weeks since Sep 6, 2010 : " + result);
  }
  
  /** How much time till midnight? */
  private void timeTillMidnight(){
    DateTime now = DateTime.now(TimeZone.getDefault());
    DateTime midnight = now.plusDays(1).getStartOfDay();
    long result = now.numSecondsFrom(midnight);
    log("This many seconds till midnight : " + result);
  }
  
  /** Format using ISO style. */
  private void imitateISOFormat(){
    DateTime now = DateTime.now(TimeZone.getDefault());
    log("Output using an ISO format: " + now.format("YYYY-MM-DDThh:mm:ss"));
  }

  private void firstDayOfThisWeek(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    DateTime firstDayThisWeek = today; //start value
    int todaysWeekday = today.getWeekDay();
    int SUNDAY = 1;
    if(todaysWeekday > SUNDAY){
      int numDaysFromSunday = todaysWeekday - SUNDAY;
      firstDayThisWeek = today.minusDays(numDaysFromSunday);
    }
    log("The first day of this week is : " + firstDayThisWeek);
  }
  
  /** For how many years has the JDK date-time API been suctorial? */
  private void jdkDatesSuctorial(){
    DateTime today = DateTime.today(TimeZone.getDefault());
    DateTime jdkFirstPublished = DateTime.forDateOnly(1996, 1, 23);
    int result = today.getYear() - jdkFirstPublished.getYear();
    log("The number of years the JDK date-time API has been suctorial : " + result);
  }
  
}

分享到:
评论

相关推荐

    date4j是一个用于简化日期和时间操作的Java工具

    date4j是一个用于简化日期和时间操作的Java工具。可以替换java.util.Date。

    date4j.jar

    date4j是一个用于简化日期和时间操作的Java工具。

    Date4j,一个简约的日期处理类库

    Date4j的设计理念是提供一种更加直观的日期表示和操作方式。它引入了自己的日期类,如`DateTime`,这个类比Java内置的`Date`类更易于理解和使用。Date4j支持ISO 8601日期时间格式,这是国际上广泛采用的标准,使得...

    date4j-source

    `date4j`是一个轻量级的Java日期和时间库,它提供了对日期和时间操作的灵活处理。这个源代码压缩包包含`date4j`的源代码,这对于开发者来说非常有价值,因为可以深入理解其内部工作原理,进行自定义扩展或者调试。...

    Java常用工具类

    在Java中,最著名的工具类库是`java.util`包,它包含了大量实用类,如集合、日期时间、数学计算、线程管理等。此外,还有一些第三方库,如Apache Commons Lang、Guava等,提供了更丰富的功能。 1. **java.util包**...

    java工具类

    Java工具类是编程实践中常用的辅助模块,它们提供了一系列静态方法,方便开发者进行常见的操作,比如字符串处理、日期时间操作、加密解密以及日志记录等。以下是对标题和描述中涉及知识点的详细解释: 1. **String...

    java常用开发工具类大全

    下面我们将深入探讨几个常见的Java工具类库以及它们在实际开发中的应用。 1. **Java标准库中的工具类** - `java.util`: 这个包中包含了大量工具类,如`ArrayList`, `HashMap`, `LinkedList`等集合框架类,以及`...

    31个java工具类大汇总

    同样来自Apache Commons Lang,`DateUtils`提供了日期和时间的操作方法,比如格式化日期、解析日期字符串、计算两个日期之间的差值等。相比Java内置的`java.util.Date`和`java.text.SimpleDateFormat`,它的使用...

    java常用工具类的使用

    Java工具概述 在Java开发中,很多复杂的算法和数据结构已经被实现并封装在标准库中,供开发者直接使用。这大大减轻了开发者的负担,使得他们能够专注于应用程序的核心逻辑。例如,数组排序这样的任务可以通过`...

    java常用的工具类

    5. **Java Date/Time API**: Java 8引入了全新的日期和时间API,位于`java.time`包下,如`LocalDate`、`LocalTime`、`LocalDateTime`、`ZonedDateTime`等类,以及`TemporalAdjusters`和`TemporalQueries`等工具类,...

    JAVA28个常用工具类

    5. **DateUtil.java**: 日期时间工具类,帮助开发者处理日期和时间,如格式化日期、计算两个日期之间的差值、获取当前时间等。通常会使用Java 8的`java.time`包或者旧版的`java.util.Date`和`java.text....

    Java常用工具类.zip

    2. **日期时间工具类**:Java 8引入了`java.time`包,提供`LocalDate`, `LocalTime`, `LocalDateTime`等类,以及`java.time.format.DateTimeFormatter`进行日期时间格式化。而在旧版本中,`java.util.Date`和`java....

    常用java编程工具

    10. **JavaScript系统时间.txt**:这个文件可能是关于如何在JavaScript中获取和操作系统时间的说明或示例代码,JavaScript中的Date对象可以用来处理日期和时间相关操作。 以上这些工具和资源在Java开发,特别是J2EE...

    date4j:DATE4J 是标准 JDK 日期类的简单替代品。 它是由 Hirondelle Systems (John O'Hanley) 创建的。 (42Ko ...)

    概述Date4j 来自 Hirondelle Systems, " 和他的许可证 BSD ( ) DATE4J 是标准 JDK 日期类的简单替代品。... date4j 工具选择专注于数据库如何以简单的样式(没有时区/偏移量)存储日期和时间,而不是对民用计时的神秘

    28个java常用的工具类源码

    22. **System**: 提供系统相关的属性和操作,如获取当前时间、系统属性等。 23. **Currency**: 处理货币类型和汇率转换。 24. **UUID**: 生成全局唯一的128位标识符。 25. **CharsetEncoder 和 CharsetDecoder**:...

    java常用工具类

    6. **Date** 和 **Calendar** 类:处理日期和时间的工具,但现代Java推荐使用**java.time**包中的类,如LocalDate, LocalDateTime和Duration等,它们更强大且易于使用。 7. **Random** 类:生成随机数,支持整数和...

    28个java常用的工具类.rar

    3. **日期与时间**:处理日期和时间在Java中相对复杂,工具类可能封装了`java.util.Date`和`java.time`包中的API,提供易用的日期和时间转换、计算等功能。 4. **IO流操作**:Java的IO流操作通常涉及大量的读写和...

Global site tag (gtag.js) - Google Analytics