Tag: jodatime

Joda-Time DateTime.toDate()恢复时区

我正在尝试使用Joda-Time从一个时区转换为另一个时区。 final DateTimeZone fromTimeZone = DateTimeZone.forID(“America/Los_Angeles”); final DateTimeZone toTimeZone = DateTimeZone.forID(toTimeZoneString); DateTime convertedStart = new DateTime(start, fromTimeZone).withZone(toTimeZone); Date finalS = convertedStart.toDate(); 我看到finalS丢失了时区,当我执行.toDate()时,它会恢复到原始时区。 convertedStart已正确转换。 开始时的forms – > Wed Jun 04 18:15:38 GMT 2014 。 例: start: Wed Jun 04 18:15:38 GMT 2014 toTimeZoneString is Asia/Kolkata convertedStart : 2014-06-05T06:45:38.409+05:30 finalS: Wed Jun 04 18:15:38 GMT 2014 为什么会这样?

用时区将Joda-Time`DateTime`转换为没有时区的DateTime?

给定DateTime例如2015-07-09T05:10:00+02:00使用Joda-Time ? 如何将其转换为本地时间,即将时区添加到时间本身。 期望的输出: 2015-07-09T07:10:00 我尝试了dateTime.toDateTime(DateTimeZone.UTC)但没有给出所需的结果。

夏令时的持续时间

我有一个对象Shift ,有两个字段: startDateTime和endDateTime作为Joda-Time的DateTime 。 我的转变包括夏令时英国的变化。 它开始于25/03/2017 13:00 ,结束于26/03/2017 02:00 (基本上应该在26/03/2017 01:00结束,但这个日期不存在,并且endDate转移+1小时)。 根据这个网站 : 当地标准时间即将到达2017年3月26日星期日时,01:00:00时钟转发1小时至2017年3月26日星期日,当地白天时间02:00:00。 现在,如果我想跟踪一个员工的工作小时数new Duration(startDateTime, endDateTime).toStandardHours().getHours()将给我13个小时。 如何使用Joda-Time检测夏令时是否在我的class次持续时间内开始或结束?

Joda-Time,夏令时计算,时区独立测试

我们在应用程序中使用固定时间段。 当用户添加新的时段时,默认情况下应该是第二天的上午6:00到上午6:00。 通常情况下,它是24小时,但有一个问题:当执行夏令时更改时,该时间段的长度会发生变化。 例如 : 10月27日上午6:00至10月28日上午6:00。 在此期间执行从CEST到CET时区的转换。 因此,这个时期包含25个小时: From 27 October 6:00 AM to 28 October 3:00 AM – there are 21 hours at 3:00 am the time is shifted back by 1 hour, so there are 4 hours until 28 October 6:00 AM. 我们遇到了这个问题并尝试编写unit testing以防止它再次出现。 测试在我们的计算机上成功通过,但在CI服务器上失败(它在另一个时区)。 问题是:我们怎样才能独立于机器的时区设计我们的unit testing? 目前,小时跨度的计算是使用Joda-Time计算的: if ((aStartDate == null) || […]

使用JodaTime自动将秒数转换为年/日/小时/分钟?

有没有办法将’x’秒转换为y小时和z秒,当x超过3600秒时? 同样,使用JodaTime时,当x超过60但小于3600秒时,将其转换为’a minutes and b seconds’? 我明白我必须在PeriodFormatter中指定我需要的东西,但我不想指定它 – 我想要一个基于秒值的格式化文本。 这与您在论坛上发布的内容类似,然后您的post最初将显示为“10秒前发布”… 1分钟后您会看到“发布1分20秒前”,同样数周,日,年。

JodaTime LocalDate / LocalTime不使用自定义JSON Serializer类进行解析

我有一个名为ReportEvent的对象,它接受来自JodaTime API /框架的JodaTime和LocalDate 。 此ReportEvent可以通过谷歌的GSON转换API写入JSON 。 但是,当反序列化JodaTime partial导致问题时。 Logcat错误报告: 10-16 13:23:01.812: E/AndroidRuntime(8884): FATAL EXCEPTION: main 10-16 13:23:01.812: E/AndroidRuntime(8884): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nanospark.cnc/com.nanospark.cnc.MainActivity}: java.lang.IllegalArgumentException: Invalid format: “{“iChronology”:{“iBase”:{“iMinDa…” 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread.access$600(ActivityThread.java:141) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 10-16 13:23:01.812: E/AndroidRuntime(8884): at android.os.Handler.dispatchMessage(Handler.java:99) 10-16 13:23:01.812: […]

如何将参数发送到流中的引用方法(java 8)?

我有一个活动列表(活动),我想确定一个Map(String, DateTime)的表格Map(String, DateTime) (不是Duration或Period;它是必须的Map(String, DateTime)的数据结构。 对于每个活动,在监测期间计算的总持续时间。 Activity类有: activityLabel(String) , startTime(DateTime) , endTime(DateTime) 。 我用joda时间。 这就是我所做的: Map durations = activities.stream().collect(Collectors.toMap( it -> it.activityLabel, it ->new DateTime(0,0,0,0,0,0) //,DateTime::plus )); 我想我应该使用DateTime plus(ReadablePeriod period)或DateTime plus(ReadableDuration duration) ,但我不知道如何将类型为Duration或Period的参数发送到方法引用。 我怎样才能达到这个效果? 编辑:输入: 2011-12-03 01:00:00 2011-12-03 9:00:00睡觉 2011-12-04 03:00:00 2011-12-04 10:30:00睡觉 我应该有输出:睡觉0-0-0 15:30:00(年,月,日,小时,分钟,秒)

使用Groovy(或Java)如何将org.joda.time.LocalDateTime转换为java.util.date?

使用Groovy(或Java)如何将org.joda.time.LocalDateTime转换为java.util.Date ? import org.joda.time.* Calendar cal = Calendar.instance cal.set(Calendar.DATE, 1) cal.set(Calendar.HOUR, 0) cal.set(Calendar.MINUTE, 0) cal.set(Calendar.SECOND, 0) cal.set(Calendar.MILLISECOND, 0) Date startOfTheMonth = cal.time LocalDateTime localDateTime = new LocalDateTime() localDateTime = localDateTime.withDayOfMonth(1) localDateTime = localDateTime.withTime(0,0,0,0) localDateTime.minusMonths(6) Date dateFromLocalDate = localDateTime.toDateTime().toDate() println startOfTheMonth println dateFromLocalDate assert startOfTheMonth.equals(dateFromLocalDate) 使用localDateTime.toDateTime().toDate()给我一个java.util.Date ,这是6小时关闭我在中央标准时间(GMT +6) 如何将我的LocalDateTime日期转换回java.util.Date以使时间匹配?

Joda时间 – 两个日期之间的月份差异

我需要在两个日期之间获得差异,我正在使用Joda Time,问题是: DateTime date1 = new DateTime().withDate(2015, 2, 1); DateTime date2 = new DateTime().withDate(2015, 1, 1); Months m = Months.monthsBetween(date1, date2); int monthDif = m.getMonths();//this return 0 它返回0,因为在两个日期的中间没有月份,我需要在几个月内返回差异而不是几个月之间,并且当日期相同时添加1会有问题。

如何强制Joda-Time只解析String的一部分?

我假设我有以下日期(在String中): 2009-05-15T23:00:00 2009-05-15T23:00:00.000Z 2009-05-15 我不关心时间和区域,只有日期与我相关。 所以我想尝试用以下模式解析它: YYYY-MM-DD 我尝试使用Joda-Time解析它: DateTimeFormat = DateTimeFormat.forPattern(“yyyy-MM-dd”); format.withZone(zone).parseDateTime(string).toLocalDate(); 我得到以下exception: java.lang.IllegalArgumentException: Invalid format: “2009-05-15T23:00:00.000Z” is malformed at “T23:00:00.000Z” 有没有办法如何强制Joda-Time忽略其余的字符串?