java - 使用日历和日期获取 UTC 时间

标签 java android android-calendar

<分区>

我正在尝试使用以下代码获取 UTC 时间的 Date 实例:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Date now = cal.getTime();

这看起来很简单,但是如果我检查 IntelliJ 调试器的值,我会得到不同的 calnow 日期:

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,WEEK_OF_MONTH=3,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=0,DST_OFFSET=0]

现在:2014 年 7 月 18 日星期五 10:30:14 BRT

如您所见,cal现在 早 3 小时...我做错了什么?

提前致谢。

[编辑] 看起来像 TimeZone.setDefault(TimeZone.getTimeZone("UTC")); 在上面的代码完成工作之前...

最佳答案

这个问题已经有人回答了here

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());

编辑以将 cal 转换为 date

      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();

只需使用 Cal 值构建 Date 对象。如果有帮助,请告诉我。

关于java - 使用日历和日期获取 UTC 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24826616/

相关文章:

android - 箭去哪儿了?

java - Eclipse Java switch-case 失败警告

android - 使用开发和发布数据库设置 Firebase 进行调试和发布

java - 并行创建匹配表

android - android studio和android SDK bundle 的eclipse版本有什么区别

android - 如何包装首选项标题? (真的)

android - 新的 Android Lollipop 日历应用程序的源代码

android - 在日历 View 中编辑一天的背景颜色

java - 无法更新到新的 Android Material 版本

java.security.NoSuchAlgorithmException :cannot find any provider supporting AES