如何获得当前的UTC或GMT日期时间以毫秒为单位,而不是获取设备的当前日期时间
问题描述:
我想以毫秒为单位获取当前UTC日期时间。 但我用于此的每个代码都会返回设备的当前日期时间。 当我修改我的设备的日期时,它显示我正在修改一个日期。 因此,我想获取GMT/UTC的日期时间,以便即使用户更改他/她的设备的日期和时间,它也会显示正确的日期。如何获得当前的UTC或GMT日期时间以毫秒为单位,而不是获取设备的当前日期时间
代码我想:
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
和
DateFormat df = DateFormat.getTimeInstance();
df.setTimeZone(TimeZone.getTimeZone("UTC"));
String gmtTime = df.format(new Date());
Date gmtDate = df.parse(gmtTime);
其实我想在2017年11月15日设置闹钟,下午5点使用AlarmManager,收到事件隐藏在我的应用程序的一些活动,我不想在这个日期后显示时间。
我该如何实现这个目标?
在此先感谢!
答
尝试TimeUnit.MILLISECONDS.convert(System.nanoTime(), TimeUnit.NANOSECONDS);
答
long timestampMilliseconds =System.currentTimeMillis();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US);
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String stringDate = simpleDateFormat.format(new Date(timestampMilliseconds));
System.out.println(stringDate);
如果你希望得到尽可能UTC只是改变了时间zsone
答
使用此....
Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTimeInMillis()
for eg.
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
long timeInMili = calendar .getTimeInMillis();
or
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
long timeInMili = calendar .getTimeInMillis();
答
有没有办法让如果您使用Google Location Provider,则getTime()将从GPS信号返回派生时间,否则使用服务器时间。
'getTimeInMillis()'不依赖于时区 – DeKaNszn
它更好地从服务器检索时间,因为如果用户更改它,则无法获取实际时间 –