关于时间不同时区的转换问题

由于要做一个俄罗斯的项目,所以项目中要用到俄罗斯的当地时间,纠结了好久才转换过来。

Date d = new Date();

//首先将获取的当前时间转换为时间字符串

String dd = d.toLocaleString();

String format = "yyyy-MM-dd hh:mm:ss";

SimpleDateFormat sdf = new SimpleDateFormat(format);

//GMT+8:00是北京时间的时区

String sourceTimeZone="GMT+8:00";

//GMT+3:00是俄罗斯时间,准确的说是莫斯科时间的时区

String  targetTimeZone="GMT+3:00";

//获取传入的时间值

Long time = new Date(sdf.parse(dd).getTime()).getTime();

//获取源时区时间相对的GMT时间

LongsourceRelativelyGMT=time-TimeZone.getTimeZone(sourceTimeZone).getRawOffset();

//GMT时间+目标时间时区的偏移量获取目标时间

LongtargetTime=sourceRelativelyGMT+TimeZone.getTimeZone(targetTimeZone).getRawOffset();

Date date= new Date(targetTime);

希望对做国外项目的同学有帮助吧。

SimpleDateFormat sdf = new SimpleDateFormat(format);

时间: 2024-07-31 14:14:59

关于时间不同时区的转换问题的相关文章

时间和字符串的转换

1.常用的时间存储方式 1)time_t类型,这本质上是一个长整数,表示从1970-01-01 00:00:00到目前计时时间的秒数,如果需要更精确一点的,可以使用timeval精确到毫秒. 2)tm结构,这本质上是一个结构体,里面包含了各时间字段 struct tm { int tm_sec; /* seconds after the minute - [0,59] */ int tm_min; /* minutes after the hour - [0,59] */ int tm_hour

时间、时区、时间戳

最近遇到转换时间戳的需求,本篇记录时间.时区.时间戳等概念,并提供一个初级的换算工具类. 时间戳是一个很神奇的东西,地球上任何一个位置,此时此刻,时间戳都是一致的,然而时间就不一样了,东八区早上九点的时候,伦敦0区是当天凌晨一点,在跨越了日期线的时区,连日期都会不一致.而我们的项目提供给全球客户,因此,使用时间戳就很有必要了. Unix时间戳,长度是10位数字.但是在安卓里获取到的当前时间戳会有13位,用时间戳来设置当前时间的时候也需要是13位. (安卓有一个设置系统时间的方法,代码如下,传一个

自动调整linux系统时间和时区与Internet时间同步

调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock

debian系统之修改时间与时区

时区: 1.图形界面配置时区的命令: dpkg-reconfigure tzdata 该操作会修改两个文件 /etc/timezone #该文本文件可直接修改 /etc/localtime #该文件可通过软连接修改    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 或者直接 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 所以时区的修改需要修改两个地方: 1.修改 /etc

调整linux系统时间和时区

一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# vi /etc/sysconfig/clockZONE="Asia/Shanghai"UTC=falseARC=false 二.配置新的时间日期设定:# date -s 2008/05/06 时间设定:# date -s 18:40:00 查看硬件时间(BIOS的):    hwclock [-rw]     -r:查看现有BIOS时间,默认为-

sqlserver中对时间类型的字段转换

获取当前日期利用 convert 来转换成我们需要的datetime格式. select CONVERT(varchar(12) , getdate(), 112 ) 20040912------------------------------------------------------------ select CONVERT(varchar(12) , getdate(), 102 ) 2004.09.12-----------------------------------------

漫谈时间和时区

漫谈时间和时区 一.前言 最近在学习关于时间.时区的知识,参考了网上的一些资料,主要来源是wiki和Linux Manual,现在把阅读过程中的一些心得记录下来.在本文中,简略描述了下列相关内容: 时间度量 计时系统 GMT UT TAI UTC Unix Time Linux time zone setting Daylight saving time 二.时间 时间是一个很有趣的东西.远古人们基于太阳运转的昼夜交替,称之为日:观察月亮的盈缺变换,在两次月圆之间的周期定为月:再通过测量太阳南北

Erlang 日期和时间处理、时间戳转换

http://www.csdn 123.com/html/blogs/20131113/95993.htm 获取当前时间 erlang:now()得到的是从1970年1月1日零时起,到现在经过的时间,结果为{MegaSecs, Secs, MicroSecs}.有个问题要注意,还有另外一个函数可以实现同样的功能:os:timestamp() 那么erlang:now()和os:timestamp()的区别是什么? erlang的解释如下: erlang:now() If you do not n

服务器时间和时区错误引起的mysql数据统计出错

运营那边说,后台获取的数据,时间都不准确了,立马找到运维这边,程序那边也给我这边提供了一个线索,就是在mysql里面执行了 SELECT from_unixtime(1476883657); 显示的时间并不是北京时间.因为最近刚把mysql搬到了香港,需要都按照北京时间来设置服务器时间. 先看了下服务器的系统时间 date Thu Oct 20 13:54:12 EDT 2016 时间确实不正确,设置下系统时间 date -s "2016-10-20 14:41:31" 写入cmos