标签: jodatime

Offset值会处理Java中的夏令时时区吗?

TimeZone.setDefault(TimeZone.getTimeZone("GMT-7:00"));
Run Code Online (Sandbox Code Playgroud)

这会处理夏令时时区吗?

或者

仅需要区域名称,例如:“America/Lost_Angeles”?

java timezone datetime jodatime

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

为什么 JodaTime 库和 JDK OffsetDateTime 报告太平洋/诺福克时区偏移量不同?哪一个是正确的?

public static void main(String[] args) {
    System.out.println("Norfolk Island times as per Joda Time");
    IntStream.range(1, 13)
            .forEach(month -> System.out.println(DateTime.now((DateTimeZone.forID("Pacific/Norfolk")))
                    .withYear(2023)
                    .withMonthOfYear(month)
                    .withDayOfMonth(10)
                    .withHourOfDay(2)
                    .withMinuteOfHour(10)
                    .withSecondOfMinute(2)
                    .withMillisOfSecond(0)));
    System.out.println("-------------------------------------");
    System.out.println("Norfolk Island times as per JDK OffsetDateTime");
    IntStream.range(1, 13)
            .forEach(month -> System.out.println(OffsetDateTime.now(ZoneId.of("Pacific/Norfolk"))
                    .withYear(2023)
                    .withMonth(month)
                    .withDayOfMonth(10)
                    .withHour(2)
                    .withMinute(10)
                    .withSecond(2)
                    .withNano(0)));
    System.out.println("-------------------------------------");
}
Run Code Online (Sandbox Code Playgroud)

输出:

Norfolk Island times as per Joda Time
2023-01-10T02:10:02.000+12:00
2023-02-10T02:10:02.000+12:00
2023-03-10T02:10:02.000+12:00
2023-04-10T02:10:02.000+11:00
2023-05-10T02:10:02.000+11:00
2023-06-10T02:10:02.000+11:00
2023-07-10T02:10:02.000+11:00
2023-08-10T02:10:02.000+11:00
2023-09-10T02:10:02.000+11:00
2023-10-10T02:10:02.000+12:00
2023-11-10T02:10:02.000+12:00
2023-12-10T02:10:02.000+12:00
-------------------------------------
Norfolk Island times as per JDK OffsetDateTime
2023-01-10T02:10:02+11:00
2023-02-10T02:10:02+11:00
2023-03-10T02:10:02+11:00
2023-04-10T02:10:02+11:00
2023-05-10T02:10:02+11:00 …
Run Code Online (Sandbox Code Playgroud)

java jodatime java-time

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

JodaTime从Java.util.Date转换为DateTime(或LocalDate)

我在构造DateTime(或LocalDate)时遇到了问题.我正在转换旧代码以在内部使用joda来使事情更加清晰.但是我遇到了+1900问题......

这通过:

assertEquals(2082, new Date(2082, 1, 1).getYear());
Run Code Online (Sandbox Code Playgroud)

这两个都失败了:

assertEquals(2083, new LocalDate(new Date(2083, 1, 1)).getYear());
assertEquals(2084, new DateTime(new Date(2084, 1, 1)).toLocalDateTime().getYear());
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?如何从Date对象获取DateTime?

java jodatime java.util.date

0
推荐指数
1
解决办法
6035
查看次数

JodaTime夏令时错误

我想从ISO8601 String创建一个DateTime对象(例如2012-11-05T07:00:00+0000).这是代码:

...
DateTime day = new DateTime(dateStr);
System.out.println(dateStr + "=>" + day);
Run Code Online (Sandbox Code Playgroud)

我得到了这些结果:

...
2012-11-04T07:00:00+0000=>2012-11-04T00:00:00.000-07:00
2012-11-05T07:00:00+0000=>2012-11-04T23:00:00.000-08:00
2012-11-06T08:00:00+0000=>2012-11-06T00:00:00.000-08:00
...
Run Code Online (Sandbox Code Playgroud)

11-04并且11-06是正确的,但是11-05错了.怎么解决?我在北美西海岸.

java jodatime dst

0
推荐指数
1
解决办法
556
查看次数

Java(Joda):来自LocalDateTime午夜的秒

我试着用这个:

secondsFromMidnight = Seconds.secondsBetween(localDateTime.toLocalDate(),    
    localDateTime).getSeconds();
Run Code Online (Sandbox Code Playgroud)

但它引发了一个例外(参见下文).我认为是一个很好的方法,但我还没有成功地适应我的情况.如果我写这个:

    DateTime dateTimeFromMidnight = new DateMidnight(localDateTime.getChronology()).toDateTime();
    Duration duration = new Duration(dateTimeFromMidnight, localDateTime.toDateTime());
Run Code Online (Sandbox Code Playgroud)

它与时区混淆(我少了1小时).

如果您的解决方案也可轻松适应数小时,分钟等,那么这是一个优势.

我绝对需要使用LocalDateTime作为输入类型,请不要在其他类中发布解决方案.

Exception in thread "main" java.lang.IllegalArgumentException: ReadablePartial objects must have the same set of fields
at org.joda.time.base.BaseSingleFieldPeriod.between(BaseSingleFieldPeriod.java:92)
at org.joda.time.Seconds.secondsBetween(Seconds.java:124)
Run Code Online (Sandbox Code Playgroud)

java time jodatime

0
推荐指数
1
解决办法
2019
查看次数

Java Joda - 尝试遍历日期,月份和年份时的无限迭代

我必须在特定日期范围之间为每个月的每一天创建表格(例如,2012-01-30至2013-04-30).我正在尝试使用三个for循环和DateTime isBefore方法来执行此操作,但是我的循环无限运行(尽管日期,月份和年份按其应有的方式递增).我在下面写的代码片段,

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm");
DateTime startDate = dtf.parseDateTime(startDateTime);
DateTime endDate = dtf.parseDateTime(endDateTime);
try{

    for(DateTime y=startDate;y.isBefore(endDate);y=y.plusYears(1)) {
        for(DateTime month=startDate;startDate.isBefore(endDate);month=month.plusMonths(1)) {
           for(DateTime date=startDate;startDate.isBefore(endDate);date=date.plusDays(1)){
                String sqlStmt = "CREATE TABLE IF NOT EXISTS...
                ...
            }
        }
    }
} catch (SQLException e) {

StackTraceElement stack = e.getStackTrace()[2];

  }
Run Code Online (Sandbox Code Playgroud)

我的表是按照我想要的方式创建的,所以我正在尝试执行的sqlstmt没有问题,只是一旦遇到endDate,循环就不会终止.我是Java的新手,所以不太确定我在这里做错了什么.任何建议都会非常有用!!!

谢谢!

java sql datetime jodatime

0
推荐指数
1
解决办法
772
查看次数

Joda-Time欧洲/柏林的日期时间夏令时

如何使用Joda-Time datetime 解析日期字符串,该日期时间使用正确的时区和夏令时?

作为scala中的示例,我尝试解析字符串"2014-04-07 01:00:00.000"(没有时区信息).这个日期来自MySQL,应该在tz Europe/Berlin +01:00.我喜欢的是根据2014-04-07 00:00:00 + 01:00的joda约会时间,这是欧洲/柏林目前没有在DST(GMT +1)的时区.

val fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS").withZone(DateTimeZone.forID("Europe/Berlin"))
val dt = fmt.parseDateTime("2014-04-07 01:00:00.000")
Run Code Online (Sandbox Code Playgroud)

不幸的是,Joda-Time将日期解析为2014-04-07T01:00:00.000 + 02:00,这是当前错误的偏移(02:00而不是01:00)

任何想法如何让Joda-Time用正确的DST偏移解析日期?

java timezone scala jodatime datetime-format

0
推荐指数
1
解决办法
1635
查看次数

如何使用JodaTime设置固定日期?

我正在寻找使用JodaTime每月创建固定日期的任何方式。我有一个JSpinner来设置整数值,我想获取此值并创建日期。例如:JSpinner的有15个,我想创建之日起2016-09-152016-10-152016-11-15

如何使用JodaTime做到这一点?

java jodatime

0
推荐指数
1
解决办法
3085
查看次数

joda时区ID是否与java时区ID相同?

我在Android上使用ACTION_TIMEZONE_CHANGED意图过滤器来响应时区更改.

我注意到Jodas当前时区目前没有更新使用: DateTimeZone.getDefault()

当我使用Java的默认值时TimeZone.getDefault(),时区是正确的.

注意:当我再次更改它时:Joda具有我之前更改过的值.所以它落后了(当Android激发广播意图时尚未更新).

所以我只能将Java时区用于当前时区.但我的域对象使用Joda DateTimeZone.现在我想将当前时区与我的域对象中的时区进行比较.保存这样做:

TimeZone currenTimeZone = TimeZone.getDefault();
if(action.getLocation().getDateTimeZone().getID().equals(currenTimeZone.getID()))) {
 [...]
}
Run Code Online (Sandbox Code Playgroud)

?或者两个库之间的时区ID可以不同吗?

java datetime android jodatime

0
推荐指数
1
解决办法
469
查看次数

按秒计算

在我的Java项目中,我希望将圆形日期时间秒除以5.

I have got   -   I want 
 12:00:01    -  12:00:00
 12:00:04    -  12:00:05
 12:00:06    -  12:00:05
 12:00:07    -  12:00:05
 12:00:08    -  12:00:10
 ...
 12:00:58    -  12:01:00
Run Code Online (Sandbox Code Playgroud)

日期对象包含日期,例如:Fri May 12 12:00:03 CEST 2017 我想要圆形秒数来模数5.我想要使用舍入秒来实现Date对象.

我怎么能用简单的数学运算Joda呢?

java date rounding jodatime

0
推荐指数
1
解决办法
326
查看次数