现在,如果这个日期被转换到任何其他时区..假设GMT+5:30,我会得到意想不到的结果
若要修复上述问题...我编写了以下代码
//Reading the DB time (which does not have timezone info)
Date dbDate = entityObj.getDBUtcDate();
//Setting GMT timezone to the date, without modifying the date
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
c.set(dbDate.getYear(), dbDate.getMonth(), dbDate.getDate()..., dbDate.getMinutes());
Date utcDate = c.getTime();
使用上面的代码..我可以在UTC时区获得数据库存储日期,但当我使用以下逻辑转换到其他时区(例如GMT+5:30)时
Calendar outCal = Calendar.getInstance(TimeZone.getTimeZone("GMT+5:30"));
outCal.setTimeInMillis(utcDate.getTime());
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, outCal.get(Calendar.YEAR));
cal.set(Calendar.MONTH, outCal.get(Calendar.MONTH));
cal.set(Calendar.DAY_OF_MONTH, outCal.get(Calendar.DAY_OF_MONTH));
cal.set(Calendar.HOUR_OF_DAY, outCal.get(Calendar.HOUR_OF_DAY));
cal.set(Calendar.MINUTE, outCal.get(Calendar.MINUTE));
cal.set(Calendar.SECOND, outCal.get(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, outCal.get(Calendar.MILLISECOND));
//Converted date
Date pstTime = cal.getTime();
//Converted time mill seconds
long timeMilSec = pstTime.getTime();
ps:我希望输出是java.util.date/Calendar的形式,因为我需要在这个日期再做一次转换
请帮我解决这个问题
Java中的日期没有时区。它们只是时间上的一个普遍瞬间。如果要在给定时区中显示日期,则只需使用用该时区初始化的DateFormat:
DateFormat df = DateFormat.getInstance();
df.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("The date in the database, in the UTC time zone, is "
+ df.format(date));
你不需要转换任何东西。日期格式基于通用即时it格式和您告诉它使用的时区打印适当的值。
同样,如果你想知道日期是星期一还是星期二,或者是1点钟还是2点钟,你需要首先选择一个时区,将它转换为日历,然后向日历询问信息:
Calendar cal = Calendar.getInstance(someTimeZone);
cal.setTime(date);
System.out.println("The day for the date stored in the database, for the time zone "
+ someTimeZone
+ " is " + cal.get(Calendar.DATE));
其他人有这个奇怪的问题吗?错误消息: 致命错误:未捕获异常“exception”,消息为“DateTime::\uuu construct():无法分析位置17(A)处的时间字符串(2016年1月18日美国/纽约凌晨00:00):在数据库中找不到时区 异常:DateTime::_构造():未能分析位置17(A)处的时间字符串(2016年1月18日美国/纽约凌晨00:00):在数据库中找不到时区 原
我遇到了java的一个问题。时间类及其到DB类型的映射。我想存储Instant类型,但它的行为非常不直观。 我有基本的实体类: 现在,我将创建并持久化实体: Java中的数据符合预期-系统输出如下: 但是,DB中的数据不是。它们都存储为相同的值。所有列的默认类型都设置为TIMESTAMP。它们都被存储为应用程序JVM时区中的LocalDateTime。 我一点也不喜欢这样,这些类型之间没有区别,值
这是我在申请表中得到的日期: 将psqlDate转换为joda的最佳方式是什么? [编辑] 我可以使用解析方法。它可以很好地使用时间戳,它可以使用T-分割日期和时间的信息。 这应该与良好的模式一起工作: 带有时区的PostgreSQL时间戳的正确模式是什么?
在尝试将转换为时,我遇到以下异常。
以下是我对CXF的问题。我有一个用CXF编写的SOAP1.2服务。该服务并不复杂,它基本上放置了一个XML int DB(Oracle11.x)。WSDL中的所有日期都定义为xsd:date。 哪些库/类可以用来封送/unmrashal xsd:date to dates而不带时间?还是必须编写自己的类来扩展XmlAdapter?
问题内容: 我知道这个问题看起来像是FAQ主题,但关键是时区和性能。我有整数YYYYMMDD日期(例如20150131)。这是一个很好的“几乎可以工作”的解决方案: “几乎”是因为我收到0x0126810d和EET(UTC + 2 / DST时为+3)时区,我收到: java.lang.IllegalArgumentException:由于时区偏移转换而导致的非法瞬间:1930-06-20T22: