java中new date与系统时间差8小时

java中new date与系统时间差8小时,第1张

Date d = new Date();

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd kk:mm:ss ");

sdfsetTimeZone(TimeZonegetTimeZone("Asia/Shanghai"));

Systemoutprintln(sdfformat(d));

用这个试试

你不太可能每个地方都使用上面这段代码,最好是包装一下,只需要设置一次就可以了

import javatext;

import javautil;

public class Test {

public static void main(String[] args) {

Date d = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ssSSS");//时:分:秒:毫秒

Systemoutprintln(sdfformat(d));

Long l = dgetTime();//返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

l += 100000;//加100000毫秒

Date d1 = new Date(l);// 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

Systemoutprintln(sdfformat(d1));

}

}

在TimeZone类中有个静态方法 getAvailableIDs(int rawoffset) 可以获取rawoffset对应的所有的时区id,其中参数表示时间偏移量,用毫秒表示,例如东八区,则为860601000。有了区域ID,就可以根据静态方法getTimeZone(String zoneId)获取对应的区域了。

所以获取一个时间对应的所有区域就可以实现为:

TimeZone tz = TimeZonegetDefault();

int rawOffset = 8;

String[] ids = TimeZonegetAvailableIDs(rawOffset  60  60  1000);

for (String id : ids) {

tz = TimeZonegetTimeZone(id);

}

针对题主的要求,拿到tz之后,需要获得下一个时区,可以这样实现

TimeZone tz = TimeZonegetTimeZone("GMT+8:00");

int x = 1;//可以为-2、-1、1、2。。。先获取rawoffset,再获取时区

int rawOffset = tzgetRawOffset() + x  60  60  1000;

String[] ids = TimeZonegetAvailableIDs(rawOffset);

for (String id : ids) {

TimeZone nexttz = TimeZonegetTimeZone(id);

}

大写的s表示毫秒数

你的这个可以这么写

SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MM-dd aHH:mm:ss:SSS");

Systemoutprintln(dateFormatGmtformat(new Date()));

输出2014-03-04 下午18:13:05:627

这个627就是对应那个SSS,也就是当前毫秒数

public class time{

/

获取当前时间

/

static String GetNowDate(){

String temp_str="";

Date dt = new Date();

//最后的aa表示“上午”或“下午” HH表示24小时制 如果换成hh表示12小时制

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss aa");

temp_str=sdfformat(dt);

return temp_str;

}

public static void main(String arg[]){

Systemoutprintln(GetNowDate());

}

}

上面这段代码就能获取当前时间,并转换为字符串打印出来。

你说的SystemcurrentTimeMillis()中这段代码里没有用处

如果直接在客户端取时间的话,这样很容易被破解: 如果用户在注销之前把系统时间了一下,结果会怎么样 这样取到的时间就不对了

所以要有一个专门的时间服务器,客户端只管向服务器发送上机和下机的信号,服务器在接到这两个信号时分别取时间,这样就保证了时间的正确性 简单的做法就是直接使用数据库服务器的时间

收到一个上下机信号时,使用GETDATE()获取相应的时刻,然后将两个时间一减就OK

这样也得保证你的数据库服务器系统日期别被人轻易改掉,否则还是不行

以上就是关于java中new date与系统时间差8小时全部的内容,包括:java中new date与系统时间差8小时、java中如何获得当前时间并输出:时,分,秒,、java中已知一个时区TimeZone,想取下一个时区如何取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9645677.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存