相关疑难解决方法(0)

如何使用Java处理日历时区?

我有一个来自我的应用程序的Timestamp值.用户可以在任何给定的本地TimeZone中.

由于此日期用于假定给定时间始终为GMT的WebService,因此我需要将用户的参数从say(EST)转换为(GMT).这是踢球者:用户不知道他的TZ.他进入了他想要发送给WS的创建日期,所以我需要的是:

用户输入: 2008年5月1日下午6:12(美国东部时间)
WS的参数必须是:2008年5月1日下午6:12(格林威治标准时间)

我知道默认情况下TimeStamps总是应该是GMT,但是在发送参数时,即使我从TS创建我的日历(应该是GMT),除非用户使用GMT,否则小时总是关闭.我错过了什么?

Timestamp issuedDate = (Timestamp) getACPValue(inputs_, "issuedDate");
Calendar issueDate = convertTimestampToJavaCalendar(issuedDate);
...
private static java.util.Calendar convertTimestampToJavaCalendar(Timestamp ts_) {
  java.util.Calendar cal = java.util.Calendar.getInstance(
      GMT_TIMEZONE, EN_US_LOCALE);
  cal.setTimeInMillis(ts_.getTime());
  return cal;
}
Run Code Online (Sandbox Code Playgroud)

使用前面的代码,这就是我得到的结果(简单格式,便于阅读):

[2008年5月1日下午11:12]

java timezone calendar

91
推荐指数
7
解决办法
21万
查看次数

java.sql.Timestamp时区是否具体?

我必须在UTC中存储UTC dateTime.
我已将特定时区中给出的dateTime转换为UTC.因为我遵循以下代码.
我的输入日期时间是"20121225 10:00:00 Z"时区是"亚洲/加尔各答"
我的服务器/数据库(oracle)在同一时区(IST)"亚洲/加尔各答"运行

获取此特定时区中的Date对象

        String date = "20121225 10:00:00 Z";
        String timeZoneId = "Asia/Calcutta";
        TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);

        DateFormat dateFormatLocal = new SimpleDateFormat("yyyyMMdd HH:mm:ss z");
                    //This date object is given time and given timezone
        java.util.Date parsedDate = dateFormatLocal.parse(date + " "  
                         + timeZone.getDisplayName(false, TimeZone.SHORT));

        if (timeZone.inDaylightTime(parsedDate)) {
            // We need to re-parse because we don't know if the date
            // is DST until it is parsed...
            parsedDate = dateFormatLocal.parse(date + " "
                    + timeZone.getDisplayName(true, TimeZone.SHORT));
        } …
Run Code Online (Sandbox Code Playgroud)

java oracle datetime date jdbc

74
推荐指数
6
解决办法
10万
查看次数

在将Java Date写入SQL TIMESTAMP列之前,JDBC是否将日期从JVM时区转换为数据库会话时区?

在将Java Date写入SQL TIMESTAMP列之前,JDBC是否将日期从Java虚拟机时区转换为数据库会话的日期?

例如,假设Java虚拟机时区为UTC且数据库会话时区为UTC-5.如果Java程序试图2000-01-01 00:00:00通过传递它来存储PreparedStatement#setTimestamp(int, Timestamp),根据JDBC标准,数据库是存储TIMESTAMP '2000-01-01 00:00:00'还是TIMESTAMP '1999-12-31 19:00:00'

java sql timezone timestamp jdbc

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

在Oracle JDBC驱动程序中,将Java日期写入TIMESTAMP列时,时区会发生什么?

我已经四处寻找,但令人惊讶的是无法为Oracle JDBC找到答案.这个密切相关的问题有PostgreSQL和MySQL的答案.

基本上,如果我在两个不同时区有两个应用服务器将时间戳写入一个Oracle数据库,会发生什么?谢谢.

编辑:我应该补充一点,当我查询时,JDBC似乎是发送到数据库的值是在我的本地时区.

java sql oracle jdbc

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

标签 统计

java ×4

jdbc ×3

oracle ×2

sql ×2

timezone ×2

calendar ×1

date ×1

datetime ×1

timestamp ×1