Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("PST"));
cal.setTime(new Date());
System.out.println("cal:"+cal);
System.out.println("cal.getime:"+cal.getTime());
输出是:
cal:java.util.GregorianCalendar[time=1325177592164,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="PST",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone[id=PST,offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=11,WEEK_OF_YEAR=53,WEEK_OF_MONTH=5,DAY_OF_MONTH=29,DAY_OF_YEAR=363,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=8,HOUR_OF_DAY=8,MINUTE=53,SECOND=12,MILLISECOND=164,ZONE_OFFSET=-28800000,DST_OFFSET=0]
cal.getime:Thu Dec 29 22:23:12 IST 2011
面临的问题:
打印'cal'对象按时区获取日期和时间。
cal.getTime()
未按时区显示日期和时间。
答案 0 :(得分:2)
您应该以UTC(java.util.Date)表示时间,然后在用户的本地时区中显示时间。使用DateFormat
和TimeZone
即可。 Read this article了解更多详情
答案 1 :(得分:0)
不幸的是,Date对象始终以GMT显示时间。您需要使用SimpleDateFormat之类的东西来在格式化的时区中显示时间。
答案 2 :(得分:0)
将用户给定时间分配到字符串变量中,然后创建日期格式化程序。然后使用日期格式化程序解析给定的字符串。
String dateAndTime =“30-12-2011 12:00:00 GMT + 5.30”; dateFormate formate = new SimpleDateFormate(“dd-mm-yyyy hh:mm:ss z”);日期日期= formate.parse(dateAndTime);
答案 3 :(得分:0)
Date对象是Java不存储TimeZone信息。 如果你这样做
new Date()
这是machine / jvm的当前本地时间。
使用默认/本地时区信息打印它:
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss z");
System.out.println(sdf.format(new Date()));