精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-19
import java.text.ParseException; import java.util.Date; import junit.framework.TestCase; import com.ibm.icu.text.SimpleDateFormat; public class TestDate extends TestCase{ private SimpleDateFormat icusdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private java.text.SimpleDateFormat javaTextsdf=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public void testFomat(){ Date d=new Date(); System.err.println("com.ibm.icu.text.SimpleDateFormat格式化结果"+icusdf.format(d)); System.err.println("java.text.SimpleDateFormat格式化结果:"+javaTextsdf.format(d)); } public void testParse() throws ParseException{ String dateStr="2011-08-19 17:40:00"; System.err.println("com.ibm.icu.text.SimpleDateFormat解析结果"+icusdf.parse(dateStr)); System.err.println("java.text.SimpleDateFormat解析结果:"+javaTextsdf.parse(dateStr)); } } } 打印结果: com.ibm.icu.text.SimpleDateFormat格式化结果2011-08-19 18:45:10 由上面打印结果可以看出,同样的类,同样的方法,就因为包不同格式化或解析后的结果也都不同 得出结果:com.ibm.icu.text.SimpleDateFormat与java.text.SimpleDateFormat比较 1.fomat()方法,前者比后者大一小时 2.parse()方法,前者比后者小一小时 3.当然 java.text.SimpleDateFormat得到的结果是正确的 com.ibm.icu.text.SimpleDateFormat是ICU4J中的一个类。ICU4J 是IBM的国际化开发组件ICU 的Java语言实现版本。为何会发生这种怪异现象,我也没搞清楚,初步猜测是因为ibm这个包的默认时区不同。所以大家用ICU这个SimpleDateFormat时应该注意导入是哪个包
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-19
是否和CST时间相关呢?
转自: http://www.51testing.com/?uid-248074-action-viewspace-itemid-209865 CST却同时可以代表如下 4 个不同的时区: Central Standard Time (USA) UT-6:00 Central Standard Time (Australia) UT+9:30 China Standard Time UT+8:00 Cuba Standard Time UT-4:00 |
|
返回顶楼 | |
发表时间:2011-08-19
你不是一个人遇到这样的问题:
这人也是。 http://www.4ucode.com/Study/Topic/1964316 官网有实例,构造函数要求指定locale,如果没有指定就是用defalut,应该是这个default的问题。 http://icu-project.org/apiref/icu4j/com/ibm/icu/text/SimpleDateFormat.html //----------------- |
|
返回顶楼 | |
发表时间:2011-08-19
SimpleDateFormat formatter
= new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz"); |
|
返回顶楼 | |
发表时间:2011-08-20
看默认的“时区”是否一样,如果时区是一样的时间相差一个小时就说明其中一个有问题。
如果时区不一样,那设置同样的时间看时间是否一致。 |
|
返回顶楼 | |
发表时间:2011-08-21
确实很蛋疼啊,用的时候注意了。
|
|
返回顶楼 | |
发表时间:2011-08-21
wuut 写道 确实很蛋疼啊,用的时候注意了。 。。。。。。。 |
|
返回顶楼 | |
发表时间:2011-08-21
最后修改:2011-08-21
这个本来就是JDK故意设计的,或者说是bug吧,不能有static,共享的,synchronized 的 SimpleDateFormat。网上有很多报道的,
http://www.cnblogs.com/hyddd/articles/1643978.html 很详细的文章:不使用成员变量/静态成员变量的SimpleDateFormat对象 |
|
返回顶楼 | |
发表时间:2011-08-21
wuliupo 写道 这个本来就是JDK故意设计的,或者说是bug吧,不能有static,共享的,synchronized 的 SimpleDateFormat。网上有很多报道的,
http://www.cnblogs.com/hyddd/articles/1643978.html 很详细的文章:不使用成员变量/静态成员变量的SimpleDateFormat对象 说的是jdk实现不同,不是多线程下面的问题。 |
|
返回顶楼 | |
发表时间:2011-08-22
这个应该是夏令时问题。
|
|
返回顶楼 | |