如何将设备 GMT 时间添加到特定时间?
Posted
技术标签:
【中文标题】如何将设备 GMT 时间添加到特定时间?【英文标题】:How to add device GMT time to a specific time? 【发布时间】:2014-06-21 15:05:42 【问题描述】:我从 API 获取时间,例如“00:00”,我想将设备 GMT 时间添加到从 API 接收的时间。
我正在使用以下代码获取设备的 GMT 时间
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
Locale.US);
Date currentLocalTime = calendar.getTime();
DateFormat date = new SimpleDateFormat("dd:MM:yyyy HH:mm z");
String localTime = date.format(currentLocalTime);
Log.v("GMT time:", localTime + "");
是否有任何内置方法可以将 GMT 时间添加到特定时间?
【问题讨论】:
请定义将时间添加到时间。对我来说,语义上是不可能的。通常,您只能为时间添加持续时间。好吧,我只是推测:您的意思是在本地时间应用时区偏移量(UTC-time + timezone-offset = local-time)? 【参考方案1】:也许你可以试试这样的东西
public static void main(final String[] args) throws Exception
Date date = new Date();
DateFormat localDf = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
DateFormat gmtDf = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
DateFormat nyDf = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
gmtDf.setTimeZone(TimeZone.getTimeZone("GMT"));
nyDf.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println("local : " + localDf.format(date));
System.out.println("GMT : " + gmtDf.format(date));
System.out.println("NY : " + nyDf.format(date));
【讨论】:
没关系,但问题是如何将GMT时间添加到任何特定时间。 我不确定您添加 GMT 时间是什么意思。你能提供一个用例吗? 我从 API 收到了一些时间,例如“12:40”。我需要获取设备的 GMT 时间,然后将其添加到来自 API 的接收时间。例如,我得到了 GMT 时间 +05:30,我必须将其与接收时间相加,即 12:40。格林威治标准时间可能会因用户的设备和地区而异。【参考方案2】:你可以这样试试:
TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");
date.setTimeZone(gmtTime);
String localTime = date.format(currentLocalTime);
Date and time conversion to some other Timezone in java
【讨论】:
它不工作。我获得了设备的 GMT 时间,但无法添加特定时间。例如。我得到了 GMT 时间 +05:30,现在我想在“11:10”的特定时间添加它。我怎样才能做到这一点。另一方面,如果设备的 GMT 时间是 -04:00,那么如何将其添加到特定时间?以上是关于如何将设备 GMT 时间添加到特定时间?的主要内容,如果未能解决你的问题,请参考以下文章