需要引入commons-lang包,Maven配置如下:
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>
测试代码如下:
importorg.apache.commons.lang3.time.FastDateFormat; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.TimeZone; /** * Discribe:日期工具类 * Date: 2016/5/13 * Time: .19:05 */ public class FastDateFormaTest { /*patten*/ public final static String PATTEN_YEAR = "yyyy" ; public final static String PATTEN_YEAR_MM = "yyyy-MM" ; public final static String PATTEN_YEAR_MM_DD = "yyyy-MM-dd" ; public final static String PATTEN_YEAR_MM_DD_HH = "yyyy-MM-dd HH" ; public final static String PATTEN_YEAR_MM_DD_HH_MM = "yyyy-MM-dd HH:mm" ; public final static String PATTEN_YEAR_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss" ; public final static String PATTEN_YEAR_MM_DD_HH_MM_SS_MS = "yyyy-MM-dd HH:mm:ss:ms" ; public static void main(String[] args) { /** * 测试10次 */ /*for(int i=1;i<=10;i++){ testDateFormat(i); }*/ Date date = new Date(); System.out.println(dateToString(date,PATTEN_YEAR)); System.out.println(dateToString(date,PATTEN_YEAR_MM)); System.out.println(dateToString(date,PATTEN_YEAR_MM_DD)); System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH)); System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH_MM)); System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH_MM_SS)); System.out.println(dateToString(date,PATTEN_YEAR_MM_DD_HH_MM_SS_MS)); } /** * 指定日期及需输出格式,返回格式化后的字符串 * @param date * @param patten * @return */ public final static String dateToString(Date date,String patten) { FastDateFormat fastDateFormat = FastDateFormat.getInstance(patten); return fastDateFormat.format(date); } /** * testDateFormat */ public static void testDateFormat(int num){ System.out.println("执行第"+num+"次"); int cont = 200000; long l1 = System.currentTimeMillis(); for(int i=0;i<=cont;i++){ SimpleDateFormat s = new SimpleDateFormat(PATTEN_YEAR_MM_DD_HH_MM_SS); Date date = new Date(); String string = s.format(date); } long l2 = System.currentTimeMillis(); System.out.println("SimpleDateFormat covert time:"+(l2-l1)); for(int i=0;i<=cont;i++){ FastDateFormat s = FastDateFormat.getInstance(PATTEN_YEAR_MM_DD_HH_MM_SS); Date date = new Date(); String string = s.format(date); //System.out.println(string); } long l3 = System.currentTimeMillis(); System.out.println("FastDateFormat covert time:"+(l3-l2)); } }
多次运行结果如下:
执行第1次 SimpleDateFormat covert time:1183 FastDateFormat covert time:441 执行第2次 SimpleDateFormat covert time:566 FastDateFormat covert time:155 执行第3次 SimpleDateFormat covert time:322 FastDateFormat covert time:132 执行第4次 SimpleDateFormat covert time:323 FastDateFormat covert time:140 执行第5次 SimpleDateFormat covert time:331 FastDateFormat covert time:130 执行第6次 SimpleDateFormat covert time:292 FastDateFormat covert time:93 执行第7次 SimpleDateFormat covert time:245 FastDateFormat covert time:96 执行第8次 SimpleDateFormat covert time:249 FastDateFormat covert time:98 执行第9次 SimpleDateFormat covert time:246 FastDateFormat covert time:98 执行第10次 SimpleDateFormat covert time:242 FastDateFormat covert time:103
从运行结果来看,FastDateFormat效率明 SimpleDateFormat
相关推荐
SimpleDateFormat类的线程安全问题和解决方案 SimpleDateFormat类的线程安全问题 SimpleDateFormat类是Java提供的日期时间转化类,用于将日期和时间类型的数据进行解析和格式化。在Java开发中,SimpleDateFormat类...
在JavaScript中,没有内置的`SimpleDateFormat`类,它是一个Java中的类,用于日期和时间的格式化。然而,由于JavaScript在处理日期时的功能相对有限,开发者常常需要自定义函数或者使用第三方库来实现类似的功能。这...
SimpleDateFormat 允许用户以各种方式格式化日期和时间,例如以年、月、日、时、分、秒等不同的格式来表示日期和时间。 SimpleDateFormat 的继承关系是:java.lang.Object -> java.text.Format -> java.text....
但是,如果使用不小心会导致非常微妙和难以调试的问题,因为DateFormat和SimpleDateFormat类不是线程安全的。在多线程环境下调用format()和parse()方法应该使用同步代码来避免问题。 知识点1: SimpleDateFormat的非...
SimpleDateFormat 是 Java 语言中的一种日期和时间格式化类,用于将日期和时间格式化为字符串或将字符串解析为日期和时间。它是 DateFormat 的子类,继承自 java.text.Format。 SimpleDateFormat 的继承关系 ...
- 在使用`SimpleDateFormat`时,需要注意日期和时间的格式是否符合预期,特别是在国际化应用中,不同的地区可能会有不同的日期和时间格式习惯。 - `SimpleDateFormat`是线程不安全的,如果在多线程环境中使用,需要...
在Java编程语言中,`SimpleDateFormat`和`Calendar`是两个重要的日期和时间处理类,它们在处理日期格式化、解析以及日期计算方面扮演着重要角色。本文将深入探讨这两个类的功能、用法以及它们之间的关系。 `...
在Java编程语言中,`SimpleDateFormat` 是一个非常重要的日期和时间格式化工具类,它允许程序员以特定的模式来解析和格式化日期。当我们需要从系统获取当前时间并按照自定义格式显示时,`SimpleDateFormat` 就派上了...
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); date.setTime(time); System.out.println(sdf.format(date)); 发现时间于想要的时间不符,请运行Time.reg文件
1. **内部状态可变**:`SimpleDateFormat`内部维护了一些可变的状态,如解析和格式化日期时使用的日期字段和格式模板。当一个线程正在修改这些状态时,另一个线程可能也在尝试访问,导致数据竞争和不一致。 2. **...
日期操作。。。基础的SimpleDateFormat格式化日期!!操作!》初级学习代码
目录SimpleDateFormat诡异bug复现SimpleDateFormat诡异bug字符串日期转Date日期(parse)Date日期转String类型(format)SimpleDateFormat出现bug的原因如何解决SimpleDateFormat多线程安全问题局部变量使用...
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss"); // 创建时间对象 Date date = new Date(finalI * 1000); // 执行时间格式化并打印结果 System.out.println(simpleDateFormat.format(date...
1.创建SimpleDateFormat对象,确定日期被格式化的格式 2.使用循环,在循环中调用Thread的sleep方法,让线程休眠1s后打印当前时间的字符串
通过使用ThreadLocal类和synchronized关键字,我们可以避免线程安全问题,并确保SimpleDateFormat类的安全转换。在实际应用中,我们需要根据实际情况选择合适的解决方案,以确保SimpleDateFormat类的安全转换。
在Java编程语言中,`SimpleDateFormat`是日期和时间格式化的关键工具,它允许程序员将日期和时间对象转换为字符串,以及将字符串解析回日期对象。这个详细教程将引导你了解如何有效地使用`SimpleDateFormat`类。以下...
### 关于SimpleDateFormat的非线程安全问题及其解决方案 #### 一、问题介绍 在Java开发过程中,`...通过以上措施,可以有效地解决`SimpleDateFormat`在多线程环境下的非线程安全问题,提高程序的稳定性和可靠性。
在Java编程语言中,`SimpleDateFormat`是`java.text.DateFormat`类的一个具体实现,它用于以国际化的方式对日期和时间进行格式化和解析。这个类提供了丰富的功能,允许程序员自定义日期时间的显示格式,从而满足不同...
JAVA 中的日期和时间处理可以使用 Date 类和 SimpleDateFormat 类来实现,通过 format() 方法和 parse() 方法可以实现日期和文本之间的转换。 在实际开发中,我们可以根据需要选择不同的日期格式和解析方式,例如...