62,628
社区成员
发帖
与我相关
我的任务
分享
@Test
public void fun1() {
Calendar calendar = Calendar.getInstance(TimeZone
.getTimeZone("GMT-8:00"));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(calendar.getTime());
System.out.println(format);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println((calendar.get(Calendar.MONTH) + 1) );
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
}
2018-05-14 14:51:36
2018
5
13
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT-8:00"));
String format = simpleDateFormat.format(calendar.getTime());
DateFormat 也要设置一样的时区
时间戳与时区无关,所有地区在同一时刻时间戳是一样的 Calendar calendar1 = Calendar.getInstance();
System.out.println(calendar1.getTimeInMillis());
Calendar calendar = Calendar.getInstance(TimeZone
.getTimeZone("GMT-8:00"));
System.out.println(calendar.getTimeInMillis());通过测试两个得到的值是近似相同的,所以用simpleDateFormat.format(calendar.getTime())取的是本机的时间,也就是东八区的时间;
calendar.get(Calendar.DAY_OF_MONTH)是有时区转换的,由于你初始设置的时区是西八区,比东八区落后相差十几个小时,所以日期少了一天