Tag: timezone

Apache Log4j使用特定时区进行日志记录

我希望日志应包含特定时区的日期条目。 有没有办法在log4j.properties中强制时区? 现在我正在使用JDK 1.5,因为您已经知道JDK 1.5中存在时区错误,该错误在JDK 1.5中被删除。 对于JDK 1.5,默认情况下显示“GMT”时区。 我想在Log4j中配置我的特定时区。

Gson中的DateFormat模式“yyyy-MM-dd’T’HH:mm:ss.SSS’Z’”

我有两个字段如下( 注意第一个字段有毫秒部分 ): { “updateTime”:”2011-11-02T02:50:12.208Z”, “deliverTime”:”1899-12-31T16:00:00Z” } 我想用Json将Json字符串反序列化为一个对象,所以我得到一个Gson实例: GsonBuilder gb = new GsonBuilder(); gb.setDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SSS’Z'”); gson = gb.create(); 第一个字段被反序列化为Java日期类型: 2011-11-02 02:50:12.208 (看起来像忽略了时区部分-‘Z’,这是我所期望的)。 但是,第二个字段被反序列化为1900-01-01 00:00:00 (我住在中国,这里是+ 8 GMT),似乎时区部分-‘Z’在反序列化中起作用。 为什么第二个字段使用时区部分? 这不是我的预期。

将`Java.lang.String`转换为`oracle.sql.TIMESTAMPTZ`

我有以下Java.lang.String值表示TIMESTAMPTZ String值。 我需要将这些Java.lang.String转换为oracle.sql.TIMESTAMPTZ 。 “2016-04-19 17:34:43.781 Asia/Calcutta”, “2016-04-30 20:05:02.002 8:00”, “2003-11-11 00:22:15.0 -7:00”, “2003-01-01 02:00:00.0 -7:00”, “2007-06-08 15:01:12.288 Asia/Bahrain”, “2016-03-08 17:17:35.301 Asia/Calcutta”, “1994-11-24 11:57:17.303” 我试过很多方面。 样本1: 通过使用SimpleDateFormat尝试它 String[] timeZoneValues = new String[]{“2016-04-19 17:34:43.781 Asia/Calcutta”, “2016-04-30 20:05:02.002 8:00”, “2003-11-11 00:22:15.0 -7:00”, “2003-01-01 02:00:00.0 -7:00”, “2007-06-08 15:01:12.288 Asia/Bahrain”, “2016-03-08 17:17:35.301 Asia/Calcutta”, “1994-11-24 11:57:17.303”}; for(String timeZoneValue: timeZoneValues){ SimpleDateFormat […]

使用Joda-Time获取给定日期和时区的UTC偏移量

我的日期格式为20Jan2013,08Aug2012等,具有自己的特定时区。 例如,20Jan2013可能具有澳大利亚/墨尔本的时区ID,而08Aug2012可能具有欧洲/伦敦的ID。 我想要做的是,根据这些时区和日期,计算给定日期该时区的UTC偏移量。 到目前为止我已经想出了这个: DateTimeFormatter dtf = DateTimeFormat.forPattern(“ZZ”); DateTimeFormatter dtf1 = DateTimeFormat.forPattern(“ddMMMYYYY”); DateTimeZone zone = DateTimeZone.forID(“Australia/Melbourne”); DateTime thisDate = dtf1.parseDateTime(“30Jul2013”); System.out.println(“\nZone: ” + thisDate.withZone(zone)); 这给了我输出: Zone: 2013-07-30T00:00:00.000+10:00 这是正确的,但我想从中提取UTC偏移量,在这种情况下是+10:00。 我已经找到了办法,但找不到任何东西。 有什么方法可以做到这一点吗? 我看到的唯一选择是将输出转换为String并使用substring方法获取UTC偏移量。 上面的代码确实考虑了DST(夏令时)。 所以例如,如果我有:DateTime thisDate = dtf1.parseDateTime(“30Jan2013”​​); 输出将是:2013-01-30T00:00:00.000 + 11:00 (+11:00而不是+10:00) 所以基本上我需要做的就是找到一种从2013-07-30T00:00:00.000 + 11:00提取+11:00的方法。 请帮忙!

在Java 8上为mavenunit testing设置时区

如何在Java 8上的maven surefire中设置unit testing的时区? 对于Java 7,这曾经使用systemPropertyVariables就像在以下配置中一样,但是对于Java 8,测试只使用系统时区。 org.apache.maven.plugins maven-surefire-plugin UTC 为什么会这样,我该如何解决?

在Hibernate中持久化Joda DateTime而不是Java Date

我的实体目前包含java Date属性。 我开始经常使用Joda Time进行日期操作和计算。 这意味着我不得不将我的日期转换为Joda DateTime对象并再次返回。 所以我想知道,有什么理由我不应该只更改我的实体来存储Joda DateTime对象而不是Java Date对象? 请注意,这些实体是通过Hibernate持久化的。 我找到了jodatime-hibernate项目,但我也在Joda邮件列表上读到它与较新版本的hibernate不兼容。 而且似乎维护得不是很好。 所以我想知道是否最好继续在Date和DateTime之间进行转换,或者是否明智地开始持久化DateTime对象。 我担心的是依赖于维护不善的图书馆。 编辑:请注意,我的目标之一是更好地存储时区信息。 仅存储日期似乎将日期保存在本地时区。 由于我的应用程序可以在全球范围内使用,我也需要知道时区。 Joda Time Hibernate似乎也在用户指南中解决了这个问题。

如何使用TimeZone将String转换为Date?

我正在尝试在Date + Timezone中转换我的String 。 我从DateTime变量获取我的String(这里是:xyz)。 我的代码: String abc = xyz.toString(“yyyy-MM-ddZZ”); java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(“yyyy-MM-ddXXX”); java.util.Date date = sdf.parse(abc); System.out.println(“Date: ” + sdf.format(date)); 错误: 格式无效:“2017-01-03 + 01:00”格式错误为“+01:00” 如果我尝试SimpleDateFormat(“yyyy-MM-dd”); 它工作但没有时区(“+01:00”)

Java Web应用程序中的日期转换

String date1 = “13/03/2014 16:56:46 AEDT”; SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy HH:mm:ss z”); sdf.setTimeZone(TimeZone.getTimeZone(“GMT+12”)); java.util.Date convertedDate = (java.util.Date) sdf.parse(date1); SimpleDateFormat outFormatter = new SimpleDateFormat(“EE MMM dd yyyy HH:mm:ss z”); outFormatter.setTimeZone(TimeZone.getTimeZone(“GMT+12”)); String output = outFormatter.format(convertedDate); System.out.println(“Date in NZ Timezone : ” + output); 我试图将AEDT日期转换为dd / MM / yyyy HH:mm:ss z但是它给了我例外: 线程“main”中的exceptionjava.text.ParseException:Unparseable date:“13/03/2014 16:56:46 AEDT”at java.text.DateFormat.parse(DateFormat.java:337) 请在这件事上给予我帮助…. […]

所有TimeZone时间都保持在哪里?

如果我们为特定Date设置TimeZone ,java如何设置该Date ,例如,如果我们将PST设置为时区,它如何知道确切的时区,它在哪里被维护? 提前致谢

使用TimeZone和SimpleDateFormat进行日期解析/格式化会在DST开关周围产生不同的结果

我在谷歌和Stack Overflow上发布了关于TimeZone和SimpleDateFormat的多篇post,但仍然没有得到我做错的事情。 我正在研究一些遗留代码,并且有一个方法parseDate,它会产生错误的结果。 我附上了我试图使用的示例JUnit做调查问题。 第一种方法(testParseStrangeDate_IBM_IBM)使用IBM的实现来格式化parseDate方法的输出。 第二种格式输出与Sun的实现。 使用Sun的SimpleDateFormat可以让我们的时间相差一小时(这可能与Day Light Savings有关)。 将默认TimeZone设置为IBM的实现修复了parseDate方法(只需在setupDefaultTZ方法中取消注释3行)。 我确信这不是一个错误,但我做错了。 @Test public void testParseStrangeDate_IBM_IBM() { setupDefaultTZ(); Calendar date = parseDate(“2010-03-14T02:25:00”); com.ibm.icu.text.SimpleDateFormat dateFormat = new com.ibm.icu.text.SimpleDateFormat( “yyyy-MM-dd HH:mm:ss”); // PASSES: assertEquals(“2010-03-14 02:25:00”, dateFormat.format(date.getTime())); } @Test public void testParseStrangeDate_SUN_SUN() { setupDefaultTZ(); Calendar date = parseDate(“2010-03-14T02:25:00”); java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat( “yyyy-MM-dd HH:mm:ss”); // FAILS: assertEquals(“2010-03-14 02:25:00”, […]