
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,想取下一个时区如何取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)