`
chris0424
  • 浏览: 1451 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

commons lang组件之格式化时期

阅读更多
问题

  你需要格式化一个日期,而SimpleDateFormat类又不是线程安全的.此外,你还需要标准的ISO日期格式.
 
解决方案

  使用FastDateFormat,它可以线程安全地格式化Java的Date对象.此外也可使用DateFormatUtils中的
  共有静态FastDateFormat实例,该实例对应着ISO8601所定义的日期时间格式标准.下面的例子以国际标准
  格式输出指定时区的日期和时间.
 
  Date now = new Date();
  String isoDT = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format(now);
  System.out.println("It is currently: "+isoDT);
 
  这段代码将显示当前的时间和时区信息:
 
  It is currently: 2004-03-26T16:20:00-07:00
 
  DateFormatUtils还维护了许多符合ISO 8601标准的变量.见下表:
 
  ISO_DATE_FORMAT         yyyy-MM-dd          例: "2004-01-02"
  ISO_DATE_TIME_ZONE_FORMAT    yyyy-MM-ddzz         例: "2004-01-02-07:00"
  ISO_DATETIME_FORMAT       yyyy-MM-dd'T'HH:mm:ss     例: "2004-01-02T23:22:12"
  ISO_DATETIME_TIME_ZONE_FORMAT  yyyy-MM-dd'T'HH:mm:ssZZ    例: "2004-01-02T21:13:45-07:00"
  ISO_TIME_FORMAT         'T'HH:mm:ss          例: "T04:23:22"
  ISO_TIME_NO_T_FORMAT      HH:mm:ss           例: "05:12:34"
  ISO_TIME_NO_T_TIME_ZONE_FORMAT HH:mm:ssZZ          例: "12:32:22-07:00"
  ISO_TIME_TIME_ZONE_FORMAT    'T'HH:mm:ssZZ         例: "T18:23:22-07:00"
  SMTP_DATETIME_FORMAT      EEE, dd MMM yyyy HH:mm:ss Z  例: "Wed, 01 Feb 2004 20:03:01 CST"
 
  如果你准备使用自定义的日期格式,请使用FastDateFormat而不是SimpleDateFormat:
  (不可以直接使用new 产生FastDateFormat对象,现在我们用DateFormatUtils与FastDateFormat类一起演示)
 
  String timeStr1 = DateFormatUtils.format(now1, "yyyy-MM-dd HH:mm:ss");
  String timeStr2 = DateFormatUtils.format(now1, "HH:mm:ss", TimeZone.getDefault(), Locale.getDefault());
  String timeStr5 = FastDateFormat.getInstance("yyyy-MM-dd",TimeZone.getDefault(), Locale.getDefault()).format(now1);
 
 
  为什么要在本可以使用SimpleDateFormat的时候转而使用FastDateFormat?SimpleDateFormat不是足够了吗?答案是:不够
  SimpleDateFormat不是线程安全的,而FastDateFormat是.事实上你可以发现SUN的所有格式化类都不是线程安全的,如果多
  个线程共用一个Java格式化对象,可能造成死锁,抛出RuntimeException异常或其它不协调的行为.如果在你的系统中有多个
  线程共享一个SimpleDateFormat实例,建议你马上改为FastDateFormat类.

package test2;

import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.FastDateFormat;

/**
* 格式化日期
*
* @author Administrator
*/
public class DateFormatTest1 {

public static void main(String[] args) {

Date now = new Date();
Calendar now1 = Calendar.getInstance();

// DateFormatUtils维护的符合 ISO8601标准变量
String isoDT = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
.format(now);
String isoDT1 = DateFormatUtils.ISO_DATETIME_FORMAT.format(now1);
System.out.println("isoDT:  " + isoDT);
System.out.println("isoDT1:  " + isoDT1);

// 自定义时期格式
String timeStr1 = DateFormatUtils.format(now1, "yyyy-MM-dd HH:mm:ss");
String timeStr2 = DateFormatUtils.format(now1, "HH:mm:ss", TimeZone
.getDefault(), Locale.getDefault());
String timeStr3 = DateFormatUtils.format(now, "yyyy-MM-dd HH:mm");
String timeStr4 = DateFormatUtils.format(now, "yyyy-MM-dd HH:mm:ssZZ",
TimeZone.getDefault(), Locale.getDefault());
String timeStr5 = FastDateFormat.getInstance("yyyy-MM-dd",
TimeZone.getDefault(), Locale.getDefault()).format(now1);
System.out.println("timeStr1:  " + timeStr1);
System.out.println("timeStr2:  " + timeStr2);
System.out.println("timeStr3:  " + timeStr3);
System.out.println("timeStr4:  " + timeStr4);
System.out.println("timeStr5:  " + timeStr5);
}
}


isoDT:  2009-07-08T18:26:31+08:00
isoDT1:  2009-07-08T18:26:31
timeStr1:  2009-07-08 18:26:31
timeStr2:  18:26:31
timeStr3:  2009-07-08 18:26
timeStr4:  2009-07-08 18:26:31+08:00
timeStr5:  2009-07-08
分享到:
评论

相关推荐

    Jakarta Commons组件之Lang

    其中,Lang组件是Jakarta Commons中的一个核心模块,它提供了大量的静态方法,用于处理基本Java对象,如字符串、数组、日期等。本文将深入探讨Jakarta Commons Lang组件以及在`commons-lang-2.3-src.zip`压缩包中的...

    commons-lang3-3.12.0 jar包

    Apache Commons Lang是Java编程语言中的一个实用工具库,它提供了许多增强和补充Java核心类库功能的方法。在本例中,我们关注的是`commons-lang3-3.12.0.jar`包,这是Apache Commons Lang项目的最新版本。这个库包含...

    apache commons-lang简介

    Apache Commons Lang是Java开发中的一个非常重要的开源工具库,它提供了一系列实用的工具类,极大地丰富了Java的标准库,为开发者提供了更便捷、高效的方法来处理常见的编程任务。Lang包主要包含了对字符串操作、...

    commons-lang3-3.12.0.jar

    在`commons-lang3`中,`org.apache.commons.lang3.StringUtils`类是字符串处理的核心,提供了大量静态方法,如字符串的空判断、拼接、格式化、查找替换、分割、缩进等。例如,`isBlank()`可以判断字符串是否为空或仅...

    commons+lang(API)

    - **字符串处理**:Apache Commons Lang 提供了丰富的字符串操作类`StringUtils`,如分割、连接、格式化、比较等,使得字符串操作更加简单直观。此外,还有`WordUtils`用于单词处理,`EscapeUtils`用于转义和非转义...

    commons-lang3-3.4jar.rar

    在实际开发中,`StringEscapeUtils`的这些方法广泛应用于数据格式化、输出安全以及输入验证等方面。例如,当用户输入的数据需要插入到HTML、XML或JavaScript代码中时,使用这些方法可以有效地防止恶意代码的注入。...

    commons-lang3-3.5-bin

    8. **格式化**:`capitalize()` 和 `uncapitalize()` 分别将字符串首字母转为大写或小写,`repeat()` 重复字符串一定次数。 9. **版本处理**:`VersionNumber` 类可以帮助解析和比较软件版本号,这对于处理依赖关系...

    commons-lang3-3.5-src

    标签"commons-lang"直接指向了Apache Commons Lang项目,该项目是由Apache软件基金会维护的一系列模块化、可重用的Java组件。这些组件提供了诸如字符串操作、日期和时间处理、数学函数以及反射等高级功能,极大地...

    commons-lang3-3.1.jar.zip-java Html解码组件库

    4. **日期时间处理**:`DateUtils`和`DurationFormatUtils`提供了日期和时间的处理及格式化功能。 5. **数学运算**:`NumberUtils`提供了一些基本数值类型的工具方法。 总的来说,Apache Commons Lang 3.1是一个...

    jar包-commons-lang-2.4.jar

    Apache Commons Lang是Java开发者不可或缺的工具库之一,其中的2.4版本更是经典之作。这个jar包,名为"commons-lang-2.4.jar",提供了大量的Java语言扩展,极大地丰富了Java的内置功能,为开发工作带来了极大的便利...

    aduna-commons-lang-2.8.0.jar.zip

    Aduna Commons Lang 是Apache Commons项目的一部分,Apache Commons 是一系列独立的、实用的Java组件集合,旨在为开发人员提供广泛的工具和实用程序,以解决常见的编程任务。这个库特别关注字符串处理、日期和时间...

    commons-lang3-3.0.1.jar

    Apache Commons Lang是Java开发中的一个关键组件,尤其在3.0.1版本中,它提供了大量的实用工具类,大大简化了日常的编程任务。这个名为"commons-lang3-3.0.1.jar"的文件就是Apache Commons Lang 3.0.1的库文件,它是...

    commons-lang-2.4.jar

    `DateUtils`可以进行日期的解析、格式化和比较,如`DateUtils.parseDate()`可以将字符串转换为日期对象,`DateUtils.isSameDay()`则可以判断两个日期是否为同一天。`FastDateFormat`是比`SimpleDateFormat`更高效的...

    commons-lang

    4. **日期和时间处理**:Apache Commons Lang中的DateUtils和DateFormatUtils提供了丰富的日期和时间操作,可以进行日期的比较、格式化和解析,使得开发者在处理时间相关问题时更加得心应手。 5. **字符串操作**:...

    commons-lang3-3.7

    其中,`commons-lang3-3.7`是Lang组件的一个版本,它为Java开发者提供了一系列实用的工具类,极大地扩展了Java的标准库功能,尤其在Java Web开发中扮演着重要角色。 1. **String和CharSequence的处理**:`commons-...

    Apache Commons Lang 3.6 API 帮助文档,英文

    首先,让我们详细了解Apache Commons Lang的主要组件和功能: 1. **CharUtils**: 提供了对字符操作的工具方法,如转换Unicode编码,避免在字符串处理中出现乱码问题。 2. **ClassUtils**: 这个类提供了许多与类...

    commons-lang-2.6-bin.rar

    这个压缩包"commons-lang-2.6-bin.rar"包含了Apache Commons Lang的版本2.6,这是一个广泛使用的开源组件,对于Java开发者来说非常重要。在本篇文章中,我们将深入探讨Apache Commons Lang 2.6的主要特性、使用场景...

    Apache Commons组件简介.ppt

    它提供了许多实用工具类,包括异常处理、字符串操作、日期和时间格式化、枚举操作等,大大丰富了Java基础类的功能。 3. **Math**:Apache Commons Math 提供了一系列数学计算和统计方法,支持矩阵运算、线性代数、...

    多种commons类jar包

    Lang库特别适合在需要进行复杂字符串处理、日期格式化或者需要更精细控制反射操作的场景中使用。 这三种Apache Commons库在Java开发中广泛应用,它们提高了代码的可读性和可维护性,降低了开发难度。将这些jar包...

Global site tag (gtag.js) - Google Analytics