Tag: datetime

使用Jackson(Joda-Time模块)进行DateTime反序列化的默认时区

这个问题是关于使用jackson的jackson-datatype-joda模块对Joda-Time DateTime进行反序列化。 是否有一个默认时区,日期字符串将被反序列化? 如果是这样,它是什么? 是UTC吗? 我需要问这个,因为jackson的文档并不是特定的Joda-Time DateTime。 我在本文( http://wiki.fasterxml.com/JacksonFAQDateHandling )中发现,Jackson会将GMT作为反序列化为java.util.Date或java.util.Calendar的默认时区。 但是,本文档中没有提及Joda-Time数据类型。 另外,我特别需要使用UTC时区将字符串反序列化为DateTime对象,而不是GMT:尽管这两个区域非常相似,但是存在一些小差异,因此GMT对我来说是不可行的。 谢谢。

我应该在Java 8中使用哪个日期类?

Java 8有一整套日期类: java.time.LocalDateTime ; java.time.ZonedDateTime ; java.time.Instant ; java.time.OffsetDateTime ; java.sql.Timestamp ; java.util.Date 。 我已经通过他们的JavaDocs并注意到所有这些类都包含我需要的所有方法。 因此,目前,我可以随机选择它们。 但我想有一些理由说明为什么有6个单独的类,每个类都专门用于特定目的。 技术信息和要求: 输入是String ,它被转换为这些日期格式之一。 我不需要显示时区,但是当我比较两个日期时,能够正确比较纽约和巴黎的时间非常重要。 精确级别是秒,不需要使用毫秒。 所需的操作: 找到最大/最小日期; 按日期排序对象; 计算日期和时间段(两个日期之间的差异); 将对象插入MongoDB并按日期从数据库中检索它们(例如,特定日期之后的所有对象)。 我的问题: 我应该记住哪些方面,以便从性能和可维护性的角度选择这四个选项中的最佳格式? 有什么理由可以避免这些日期类别吗?

Java System.getProperty(“user.timezone”)不起作用

当我通过java -Duser.timezone=”UTC”启动java程序java -Duser.timezone=”UTC” , System.out.println( System.getProperty( “user.timezone” ) ); System.out.println( new Date() ); // prints time in UTC 打印UTC时间,但是当我在代码中设置如下: System.setProperty( “user.timezone”, “UTC” ); System.out.println( System.getProperty( “user.timezone” ) ); // prints ‘UTC’ System.out.println( new Date() ); // prints time in local zone, not in UTC 不以UTC格式打印时间。 我需要在代码中设置时间。 不寻找乔达 环境:JDK 1.6 / Windows XP 请帮忙。 非常感谢!

使用Hibernate / JPA和JDK Date进行不需要的自动时区转换

我使用Hibernate(4.2)作为我的持久性提供程序,我有一个包含Date字段的JPA实体: @Entity @Table(name = “MY_TABLE”) public class MyTable implements Serializable { . . . @Temporal(TemporalType.TIMESTAMP) @Column(name = “START_DATE”) private Date startDate; public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } . . . } 与START_DATE对应的列定义为START_DATE TIMESTAMP (无时区)。 我在我的应用程序内部使用Joda-Time(2.3)处理日期(始终以UTC格式),并且在持久化实体之前,我使用Joda的DateTime类的toDate()方法来获取JDK Date对象为了遵守映射: public void myMethod(DateTime startDateUTC) { . . . MyTable […]

在Joda Time中查看包含日期范围

我正在使用Joda Time 2.1库。 我写了一个方法来比较给定日期是否在日期范围之间。 我希望它包含在开始日期和结束日期。我使用了LocalDate因为我不想考虑时间部分只是日期部分。 下面是它的代码。 isDateBetweenRange(LocalDate start,LocalDate end,LocalDate target){ System.out.println(“Start Date : ” +start.toDateTimeAtStartOfDay(DateTimeZone.forID(“EST”)); System.out.println(“Target Date : ” +targettoDateTimeAtStartOfDay(DateTimeZone.forID(“EST”)); System.out.println(“End Date : ” +end.toDateTimeAtStartOfDay(DateTimeZone.forID(“EST”)); System.out.println(target.isAfter(start)); System.out.println(target.isBefore(end)); } 上述方法的输出是: Start Date: 2012-11-20T00:00:00.000-05:00 Target Date: 2012-11-20T00:00:00.000-05:00 End Date : 2012-11-21T00:00:00.000-05:00 target.isAfter(start) : false target.isBefore(end) : true 我的问题是target.isAfter(start)为false,即使target日期和start具有相同的值。 我希望target >= start但在这里它只考虑target > start 。 我希望它具有包容性。 这是否意味着isAfter方法专门找到匹配? 我已经浏览了Joda […]

如何将javax.time.Instant格式化为本地时区中的字符串?

如何将javax.time.Instant为本地时区中的字符串? 以下内容将本地Instant转换为UTC ,而不是按照我的预期转换为本地时区。 删除对toLocalDateTime()的调用toLocalDateTime()如此。 我怎样才能获得当地时间? public String getDateTimeString( final Instant instant ) { checkNotNull( instant ); DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); DateTimeFormatter formatter = builder.appendPattern( “yyyyMMddHHmmss” ).toFormatter(); return formatter.print( ZonedDateTime.ofInstant( instant, TimeZone.UTC ).toLocalDateTime() ); } 注意:我们使用的是JSR-310参考实现的旧版本0.6.3 。

使用Joda或standart Java API检查日期是否在时间范围内

我有第一次作为字符串’12:00:00’和另一个’19:00:00’。 如何检查当天的时间部分是否在这些时间值内?

如何从JDBC + postgreSql时间戳获取UTC时间戳?

我在PostgreSQL中创建了一个这样的表: create table myTable ( dateAdded timestamp(0) without time zone null default (current_timestamp at time zone ‘UTC’); ) 我选择“没有时区”,因为我知道我的应用程序使用的所有时间戳都是 UTC。 据我所知,“带时间戳”的唯一区别是我可以在其他时区提供值,然后转换为UTC。 但是我想避免这种自动转换,因为如果我知道我的值是UTC,它们几乎不会有任何好处。 当我在测试表中添加新记录并使用pgAdmin查看表的内容时,我可以看到插入日期已经以UTC格式正确保存。 但是,当我尝试使用JDBC选择值时,该值减去2小时。 我位于UTC + 2,所以看起来JDBC假定表中的日期不是UTC时间戳,而是UTC + 2时间戳而是尝试转换为UTC。 一些谷歌搜索透露,JDBC标准规定了与当前时区的转换,但这可以通过向getTimestamp / setTimestamp调用提供Calander来防止。 然而,提供日历并没有任何差别。 这是我的MyBatis / Jodatime转换器: @MappedTypes(DateTime.class) public class DateTimeTypeHandler extends BaseTypeHandler { private static final Calendar UTC_CALENDAR = Calendar.getInstance(DateTimeZone.UTC.toTimeZone()); @Override public void setNonNullParameter(PreparedStatement ps, […]

在Java中转换日期时间格式

我有一行C#代码,我试图用Java复制。 代码如下所示。 n.InnerText = DateTime.Parse(n.InnerText).ToUniversalTime().ToString(“yyyy-MM-ddTHH:mm:ssZ”); 目的是将xml上下文中的DateTime替换为表示通用时间的DateTime。 我试图使用 node.setTextContent = Date.parse(node.getTextContent()) 但由于不推荐使用Date.parse(),我无法继续。 我阅读了Eclipse中的注释,并按照建议尝试了DateFormat,但是DateFormat没有解析方法。 有人可以建议我的问题的解决方案,不使用任何第三方库?

新的Date()到java中的Julian日期格式

我需要将新的Date()转换为Julian日期格式。在java函数中有任何构建。 我的确切要求是 以Julian日期格式(0YYDDD)表示文件的创建日期:0 – 数字零YY – 年份的最后两位数DDD – 年内的日期数可以在传输日期之前最多7个日历日例如:010163 = 2010年6月11日 真正看的是这样的事情 Date date=new Date(); String JulianDtae=date.someFunction() 任何帮助将不胜感激