小编Bas*_*que的帖子

用Joda和时区解析约会

我有两个时间戳,以两种不同的格式描述相同的时刻.

2010-10-03 18:58:072010-10-03T16:58:07.000+02:00.

我使用Joda-Time解析时间戳和两个不同的日期格式化程序.最后,我希望有两个DateTime对象,它们在同一时刻是相等的.

DateFormatter提供了几种控制时区和语言环境的方法,但我无法使其工作.

这是我想要的代码:

    final String date1 = "2010-10-03 18:58:07"; // Europe/Berlin local time
    final DateTimeFormatter formatter1 = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    final DateTime dateTime1 = formatter1.parseDateTime(date1);

    final String date2 = "2010-10-03T16:58:07.000+02:00"; // Europe/Berlin local time with time zone
    final DateTimeFormatter formatter2 = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
    final DateTime dateTime2 = formatter2.parseDateTime(date2);

    Assert.assertTrue(dateTime1.isEqual(dateTime2));
Run Code Online (Sandbox Code Playgroud)

java timezone datetime date jodatime

14
推荐指数
1
解决办法
2万
查看次数

使用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));
Run Code Online (Sandbox Code Playgroud)

这给了我输出:

Zone: 2013-07-30T00:00:00.000+10:00
Run Code Online (Sandbox Code Playgroud)

这是正确的,但我想从中提取UTC偏移量,在这种情况下为+10:00.我已经找到了办法,但找不到任何东西.有什么方法可以做到这一点吗?我看到的唯一选择是将输出转换为String并使用substring方法获取UTC偏移量.

上面的代码确实考虑了夏令时(夏令时).所以例如,如果我有: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 timezone utc jodatime

14
推荐指数
2
解决办法
3万
查看次数

什么是"标准"时区缩写?

我使用此下拉列表为应用程序存储与UTC相关的时区:

<select id="timezone" name="timezone" >
<option value="-12">[UTC - 12] Baker Island Time</option>
<option value="-11">[UTC - 11] Niue Time, Samoa Standard Time</option>
<option value="-10">[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time</option>
<option value="-9.5">[UTC - 9:30] Marquesas Islands Time</option>
<option value="-9">[UTC - 9] Alaska Standard Time, Gambier Island Time</option>
<option value="-8">[UTC - 8] Pacific Standard Time</option>
<option value="-7">[UTC - 7] Mountain Standard Time</option>
<option value="-6">[UTC - 6] Central Standard Time</option>
<option value="-5">[UTC - 5] Eastern Standard Time</option>
<option value="-4.5">[UTC …
Run Code Online (Sandbox Code Playgroud)

php time timezone utc gmt

14
推荐指数
1
解决办法
6105
查看次数

伊斯兰日期的Joda-Time格式

我正在使用Joda-Time在dd MMMM yyyy中获得伊斯兰日期,但我总是得到dd MM yyyy.

有什么建议吗?可能是Hijri日期不支持格式化吗?在Joda-Time网站上还不清楚.

 DateTime dtISO = new DateTime(2014,2,25,0,0,0,0);
 DateTime dtIslamic = dtISO.withChronology(IslamicChronology.getInstance());
 String formatIslamic= "dd MMMM yyyy";
 DateTimeFormatter formatter = DateTimeFormat.forPattern(formatIslamic).withChronology( IslamicChronology.getInstance());
 String islamicDateString = formatter.print(dtIslamic);
Run Code Online (Sandbox Code Playgroud)

java date jodatime

14
推荐指数
1
解决办法
1469
查看次数

如何从java 8中的LocalTime中删除毫秒

使用java.time框架,我想以格式打印时间hh:mm:ss,但是以格式LocalTime.now()给出时间hh:mm:ss,nnn.我试着用DateTimeFormatter:

DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_TIME;
LocalTime time = LocalTime.now();
String f = formatter.format(time);
System.out.println(f);
Run Code Online (Sandbox Code Playgroud)

结果:

22:53:51.894
Run Code Online (Sandbox Code Playgroud)

如何从时间中删除毫秒?

java rounding localtime datetime-format java-time

14
推荐指数
4
解决办法
2万
查看次数

将Valo主题的间距和小部件大小缩小为Reindeer主题的大小

新的Valo主题现在是Vaadin 7.3应用程序的默认主题.此主题在视觉上呈现小部件(按钮,字段等),这些小部件比以前的默认驯鹿主题大得多(更宽和更高).

这种外观现在在Android和iOS 7/8以及一些网站的移动应用程序中很受欢迎.但这些情况只需几分钟即可短暂使用.相比之下,面向商业的桌面式应用程序被人们用于更长时间的工作会话,可能一整天都是连续几个小时.面向业务的应用程序以更密集的格式呈现更多信息.对于此类用途,Valo主题的默认呈现是不合适的.具体来说,字体太薄而且模糊,而且字体和小部件的大小太大.

Valo声名鹊起的原因在于它可以调整并且很容易变形几行Java和/或CSS代码.有没有人尝试改变Valo的大小,类似于驯鹿主题?要分享的任何源代码或说明?

为了清楚起见,我的目标只是减少视觉高度和宽度以及字体大小.我不是要求改变设计,我会很感激回到一些像素空间.我正在寻找最简单,最安全的方法,让Valo小部件的大小与Reindeer主题中同行的视觉大小相同.

在短期内,我将继续覆盖使用Reindeer的默认值,如此StackOverflow.com问题所述,在新的Vaadin 7.3应用程序中从"Valo"主题更改为"Reindeer".但从长远来看,Vaadin团队对Valo的投注很大.最终驯鹿将失宠,所以我想学习如何过渡.

我确实打开了Ticket#14,909建议提供一个开关,让Valo自动缩小到Reindeer方案.

有些人误读了这篇文章:我们不是在谈论磁盘上的存储大小.我们在这里讨论像素,而不是比特.视觉大小,而不是文件大小.图形布局,而不是widgetset优化.

这个问题被莫名其妙地关闭为"过于宽泛".然而它继续获得投票.我问你上选民投票重新开放.

java themes vaadin vaadin7 vaadin-valo-theme

14
推荐指数
1
解决办法
2437
查看次数

Java 8 Date API vs Calendar/Date/DateFormat

Java 8中有一个新的n-cool Date API,即java.time包.我知道它比旧类更好的设计,更少的模糊和更多的线程安全.不过,我不知道如何使用它:

  • 我应该专门使用它而不是旧类吗?
  • 我应该更换旧课程的现有用法,因为新的东西要好得多吗?
  • 我应该避免使用java.util.Calendar, java.util.Date,java.sql.Datejava.text.DateFormat支持新的API一起还是有使用的情况下,其中的老班还是最好
  • 由于新的Date API类似于使用Java 8流API 替换Guava FluentIterable,Joda Time API是否已经过时了?

我知道这些都是很多问题,但他们感觉彼此有些相关.如果有人可以回答整个问题,那将是非常棒的,但也可以赞赏好的部分答案.

calendar date jodatime java-8 java-time

14
推荐指数
1
解决办法
5672
查看次数

是否默认启用G1垃圾收集器的String Deduplication功能?

JEP 192:在Java 8 Update 20中实现的 G1中的字符串重复数据删除添加了新的字符串重复数据删除功能:

通过增强G1垃圾收集器来减少Java堆实时数据集,以便自动且连续地对重复的String实例进行重复数据删除.

JEP页面提到命令行选项UseStringDeduplication (bool)允许启用或禁用重复数据删除功能.但是JEP页面并没有指出默认值.

➠与Java 8和Java 9捆绑在一起的G1垃圾收集器中,重复数据删除功能是否默认为ON或OFF?

➠是否有"getter"方法在运行时验证当前设置?

我不知道在JEP页面之外查找文档的位置.

至少在热点 -equipped的Java 9的实施中,G1垃圾收集器默认启用.这个事实现在促成了这个问题.有关String interning和重复数据删除的更多信息,请参阅Aleksey Shipilev在29:00的2014-10演示文稿.

java jvm g1gc java-9

14
推荐指数
2
解决办法
3120
查看次数

在Java Date/Calendar对象中找到的神秘毫秒数

使用Dates和时有一种奇怪的怪异Calendar.要点是我想创建一个特定的日期,例如

Calendar cal = Calendar.getInstance();
cal.set(1970, 0, 1, 0, 0, 0);
Date date = cal.getTime(); 
Run Code Online (Sandbox Code Playgroud)

现在的问题是:它显示了正确的日期,但是在调试时我在日期变量下看到例如"fasttime" -3599459.这使我的JUnit测试失败,因为期望的值是-3600000.似乎日历增加了541毫秒或类似于初始化时...

问题是:是不是可以简单地创建一个固定的日期而不是'我在后台'鬼功能中添加几毫秒?

java calendar date

13
推荐指数
2
解决办法
987
查看次数

具有固定毫位数的java.time ISO日期格式(在Java 8及更高版本中)

默认情况下,使用DateTimeFormatter.ISO_INSTANT格式化程序的toString方法.如果格式化程序碰巧为0,则不会打印秒数的数字.Instant

java时间示例:

    2015-10-08T17:13:07.589Z
    2015-10-08T17:13:07Z
Run Code Online (Sandbox Code Playgroud)

Joda-Time示例(以及我对java.time的期望):

    2015-10-08T17:13:07.589Z
    2015-10-08T17:13:07.000Z
Run Code Online (Sandbox Code Playgroud)

在一些系统中解析这真的很令人沮丧.Elasticsearch是我遇到的第一个问题,没有预定义的格式支持可选的millis,但我可以使用自定义格式解决这个问题.默认似乎是错误的.

看来你无法为Instants构建自己的格式字符串.是实现我自己的java.time.format.DateTimeFormatterBuilder.InstantPrinterParser的唯一选择吗?

java jodatime java-8 java-time

13
推荐指数
1
解决办法
3307
查看次数