① java时间转换,带时区的
我假设了你的已知时间类型为Calendar,如果不是你也可以自己改成Date类型,代码如下:
importjava.text.DateFormat;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.TimeZone;
publicclassTest{
(String[]args){
//假如这个是你已知的时间类型
Calendarcal=Calendar.getInstance();
cal.getTimeInMillis();
//北京时区GMT+8
Calendarbeijingcal=Calendar.getInstance();
beijingcal.clear();
beijingcal.setTimeZone(TimeZone.getTimeZone("GMT+8"));
beijingcal.setTimeInMillis(cal.getTimeInMillis());
DateFormatfmt=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
StringbeijingFormatStr=fmt.format(beijingcal.getTime());
System.out.println(beijingFormatStr);
}
}
② java中Date类中的Date(String s)构造方法如何使用
new Date(s):分配 Date 对象并初始化此对象,以表示字符串 s 指出的日期和时间
格式可以是:1970 年 1 月 1 日,00:00:00 GMT
它接受许多版语法;特别是它识别权 IETF 标准日期语法:"Sat, 12 Aug 1995 13:30:00
GMT"。它也了解美国大陆时区缩写,但对于一般用途,应该使用时区偏移量:"Sat, 12 Aug 1995 13:30:00
GMT+0430"(比格林威治子午线晚 4 小时 30 分)。如果没有指定时区,则假定用本地时区。GMT 和 UTC 被认为是相同的。
或者把双引号去掉,就是以毫秒形式表示的日期了
Date(long date)
分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日
00:00:00 GMT)以来的指定毫秒数
先确定问题来源:JAVA获得的时区和系统时区哪个有问题
若是JAVA获得的时区有问题,在代码前加上下内面这句话容就行了:TimeZone tz =TimeZone.getTimeZone("Asia/Shanghai");TimeZone.setDefault(tz)
④ 如何使用java将GMT转换为UTC格式
String toGMT(Date date) {
try {
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, "GMT"));
format.setCalendar(cal);
return format.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
⑤ java中utc时间怎么转换为本地时间
utc毫秒值是个绝对值,和时区无关。如果需要转换为对应时区的时间表示,可以使用java.text.DateFormat的setTimeZone(timeZone)之后,进行format