Luc*_*ota 5 java android android-calendar
我正在尝试使用以下代码获取具有 UTC 时间的 Date 实例:
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Date now = cal.getTime();
Run Code Online (Sandbox Code Playgroud)
这看起来很简单,但是如果我检查 IntelliJ 调试器中的值,我会得到不同的日期cal和now:
cal:java.util.GregorianCalendar[time=1405690214219,areFieldsSet=true,lenient=true,zone=GMT,firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2014,MONTH=6,WEEK_OF_YEAR=29,WEEK3OF_OF_ ,DAY_OF_MONTH=18,DAY_OF_YEAR=199,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=1, HOUR_OF_DAY=13 ,MINUTE=30,SECOND=14,MILLISECOND=219,ZONE_OFFSET
now:2014 年 7 月 18 日星期五 10:30:14 BRT
正如你所看到的,cal是提前 3 小时now......我做错了什么?
提前致谢。
[编辑] 看起来TimeZone.setDefault(TimeZone.getTimeZone("UTC"));在上面的代码完成工作之前......
这个问题已经在这里得到了回答
System.out.println(cal_Two.getTime()) 调用从 getTime() 返回一个日期。它是将日期转换为 println 的字符串,并且该转换将在您的情况下使用默认的 IST 时区。
您需要显式使用 DateFormat.setTimeZone() 来打印所需时区的日期。
TimeZone timeZone = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(timeZone);
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("EE MMM dd HH:mm:ss zzz yyyy", Locale.US);
simpleDateFormat.setTimeZone(timeZone);
System.out.println("Time zone: " + timeZone.getID());
System.out.println("default time zone: " + TimeZone.getDefault().getID());
System.out.println();
System.out.println("UTC: " + simpleDateFormat.format(calendar.getTime()));
System.out.println("Default: " + calendar.getTime());
Run Code Online (Sandbox Code Playgroud)
编辑将校准转换为日期
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DATE);
System.out.println(year);
Date date = new Date(year - 1900, month, day); // is same as date = new Date();
Run Code Online (Sandbox Code Playgroud)
只需使用 Cal 值构建 Date 对象即可。如果有帮助,请告诉我。
| 归档时间: |
|
| 查看次数: |
14621 次 |
| 最近记录: |