社区
Java SE
帖子详情
夏令时转冬令时问题请教
muiz
2007-07-23 12:13:14
现在我们有一个CS的系统(C: java, S: Oracle). 在下个月要把时间从夏令时转冬令时.
由于之前没有考虑这个问题, 所以程序中都是不分时区的.
请问大家有没有遇到这个问题? 并有什么解决建议? 包括前台的java时间,如何保存这些信息, 后台Oracle如何处理等. 谢谢!!
...全文
2272
31
打赏
收藏
夏令时转冬令时问题请教
现在我们有一个CS的系统(C: java, S: Oracle). 在下个月要把时间从夏令时转冬令时. 由于之前没有考虑这个问题, 所以程序中都是不分时区的. 请问大家有没有遇到这个问题? 并有什么解决建议? 包括前台的java时间,如何保存这些信息, 后台Oracle如何处理等. 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
muiz
2007-07-24
打赏
举报
回复
对不起, 结果是不对了. 数据库时间01-12月-99 11.00.00.000000 上午 +09:00
返回的时间却还是-8, 也就是一直是本地时间. getTimezoneOffset() 这个是静态方法. :(
muiz
2007-07-24
打赏
举报
回复
shan1119(大天使,卐~解!):
ResultSet.getTimestamp().getTimezoneOffset(): The method getTimezoneOffset() from the type Date is deprecated. 这个方法不推荐了.
我测试: 数据时间是: 01-12月-99 11.00.00.000000 上午 -08:00
System.out.println("getTimezoneOffset: " + ResultSet.getTimestamp().getTimezoneOffset().getTimezoneOffset() / 60);
打印出来是:
getTimezoneOffset: -8
结果是对的.
shan1119
2007-07-24
打赏
举报
回复
ResultSet.getTimestamp().getTimezoneOffset()
Time,Timezone都可以取到,然后剩下的可以用Calendar类来实现吧.
Calendar.setTime()
Calendar.setTimeZone()
Calendar.add(Calendar.DATE, 1);//or -1
不知道会不会有问题.
muiz
2007-07-24
打赏
举报
回复
呵呵, 谢谢!
shan1119
2007-07-24
打赏
举报
回复
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/text/SimpleDateFormat.html#rfc822timezone
再给个参考资料,你自己慢慢折腾吧,或许能用上,看你自己的了 :)
muiz
2007-07-24
打赏
举报
回复
数据库的格式是一样的, 就是不知道ResultSet.getString(index), 对于不同数据库或不同的JDBC的版本.这个tostring的结果是不相同的我想, 至少不是都相同. 说这个方法不好. 如果实在没有办法, 就这么搞了 :(
shan1119
2007-07-24
打赏
举报
回复
取到的数据格式不一样吗.如果没统一格式的话很难写,倒是有了格式会方便许多.
而且从数据库里读出来的数据应该是统一格式的,要是不统一的话,不论你怎么做都会很麻烦.
muiz
2007-07-24
打赏
举报
回复
比如: ResultSet.getString(index), 结果是:
1999-12-1 11.0.0.0 -8:0
这样可以取得timezone的信息, 可是这样去处理不好吧?
shan1119
2007-07-24
打赏
举报
回复
哦,取字符串啊,没注意到.
要是那样的话可以截取字符串,它的格式是一定的,应该能取得到.
String zone = rs.getString("t").substring(29);
这块改成这个,就不用加那个sql了.
muiz
2007-07-24
打赏
举报
回复
我这里不可以, 原因一个是这已经是一个运行的系统了. 设计开始的时候没有考虑这个问题, 所以现在才来改, 下个月就要夏冬令时转换. 二是这里的时间会有很多计算, 所以不把时间保存成字符串, 计算的时候再转换成时间. Oracle这边应该是没有什么问题了. 主要是JAVA这边 :(, 首先就是JDBC, 然后是我们系统自己的一些修改.
比特灵
2007-07-24
打赏
举报
回复
我用ORACLE的时候时间保存成字符的,感觉很方便。
muiz
2007-07-24
打赏
举报
回复
shan1119, 好像是的. 但是我奇怪的就是ResultSet.getString(index)可以看到正确的时区, getTimestamp或其他的就不可以
shan1119
2007-07-24
打赏
举报
回复
如果你想在java里直接从取到的Timestamp中得到timezone的信息好象不可能,我看了下Timestamp的构造方法,好象没有timezone的信息.
muiz
2007-07-24
打赏
举报
回复
shan1119(大天使,卐~解!), 谢谢! 这样是可以得到timezone, 但是SQL都不可能写个TO_char(t,'TZH:TZM') 在查询语句中啊. 所以这不是个好办法:)
shan1119
2007-07-24
打赏
举报
回复
看看有没有帮助.
shan1119
2007-07-24
打赏
举报
回复
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@10.201.147.209:1521:chuden";
Connection conn= DriverManager.getConnection(url,"gyomu","gyomu");
Statement stmt=conn.createStatement();
StringBuffer sql = new StringBuffer();
sql.append(" select t,TO_char(t,'TZH:TZM') zone from tbltest");
ResultSet rs = stmt.executeQuery(sql.toString());
while(rs.next()){
Timestamp t = rs.getTimestamp("t");
String zone = rs.getString("zone");
Calendar c = Calendar.getInstance();
c.setTime(t);
TimeZone tz = TimeZone.getTimeZone("GMT"+zone);
c.setTimeZone(tz);
System.out.println(c.getTimeZone());
}
}catch(Exception e){
e.printStackTrace();
}
shan1119
2007-07-23
打赏
举报
回复
不懂,什么是夏令时,冬令时?专业术语吗?
muiz
2007-07-23
打赏
举报
回复
系统时间当然要改了. 但是还是会有问题:
在夏令时改成冬令时的时候, 是时间往后推一个小时.
比如现在是夏令时8月1日00:00, 然后转到冬令时的时候, 要再向后推一个小时, 要从7月31日23:00开始计时. 所以要保证这一个小时的数据的正确性,或要可区分是夏令时的11点还是冬令时的11点.明白?
myydzhz
2007-07-23
打赏
举报
回复
为什么不直接改系统时间?
muiz
2007-07-23
打赏
举报
回复
sureyor():
ResultSet.getString(index) 这个可以把timezone的正确信息打印出来,比如:
1999-12-1 11.0.0.0 -8:0
可是我想得到的是一个时间对象, 而不是一个字符串.
加载更多回复(11)
GPS自动调夏令
时
和
冬令
时
授
时
系统.pdf
本文主要介绍了 GPS 自动调夏令
时
和
冬令
时
授
时
系统的设计和实现,旨在解决广播发射台的手动调夏令
时
、
冬令
时
的
问题
。该系统由 GPS 天线、GPS 接收机、授
时
电脑和发射机上位机组成。GPS 天线用于接收 GPS 卫星信号,...
llinux 夏令
时
与各种
时
间
夏令
时
(Daylight Saving Time, DST)是一个特殊的
时
间调整,某些地区在夏季会提前一个小
时
以利用更多日照
时
间。在`struct tm`中,`tm_isdst`字段用于标记是否处于夏令
时
期间。如果不确定当前
时
间是否为夏令
时
,该...
使用js判断当前
时
区TimeZone是否是夏令
时
夏令
时
(Daylight Saving Time,简称DST)是一种为节约能源而人为调整本地
时
钟
时
间的做法,在夏半年将
时
钟拨快一小
时
,从而在傍晚提供更长
时
间的日照,减少照明用电的需求。该做法通常在春季开始,在秋季结束。 ...
NOI2020
冬令
营讲义.zip
通过这些讲义,参赛者能够在算法和数据结构方面得到全面的提升,从而在面对复杂
问题
时
更加从容不迫。 练习题目是帮助参赛者巩固理论知识的有效方式。这些题目来源于历年竞赛中的真实
问题
,不仅具有针对性,还能帮助...
2013NOI
冬令
营试卷
本文是对2013年全国青少年信息学奥林匹克
冬令
营试卷的介绍,该试卷中包含两个主要
问题
:平面区域划分
问题
和糖果公园
问题
。在平面区域划分
问题
中,需要处理与图论相关的算法设计,而糖果公园
问题
则涉及图的遍历以及...
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章