我有将选定的小时和分钟转换为国家/地区的不同时区的问题。 假设我选择在印度上午10点,那么我想知道在印度上午10点在美国/纽约和东京的时间。反之亦然。
任何帮助都很明显...... 谢谢
答案 0 :(得分:3)
请找到以下解决方案:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mma");
TimeZone timezone = TimeZone.getDefault();
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
Date d = new Date();
sdf.setTimeZone(timezone);
String strtime = sdf.format(d);
Log.e("str time gmt ",strtime);
sdf.setTimeZone(utcTimeZone);
strtime = sdf.format(d);
Log.e("str time utc ",strtime);
我认为这将解决您的问题
答案 1 :(得分:2)
您可以使用Joda Time - Java date and time API
。您可以获取DateTimeZone
,具体取决于Joda时间中定义的Canonical ID
DateTimeZone zone = DateTimeZone.forID("Asia/Kolkata");
Joda Time有一个完整的list of Canonical ID
,您可以从中获取TimeZone,具体取决于Canonical ID。
所以,如果你想在这个时刻到纽约当地时间,你会做以下事情
// get current moment in default time zone
DateTime dt = new DateTime();
// translate to New York local time
DateTime dtNewYork = dt.withZone(DateTimeZone.forID("America/New_York"));
如需了解更多信息,请参阅Changing TimeZone
答案 2 :(得分:1)
尝试使用Joda-Time library
检查org.joda.time.DateTimeZone class
Here是相同的API文档。
答案 3 :(得分:1)
你也可以使用它,不需要外部API
DateFormat format = new SimpleDateFormat("MMMMM d, yyyy, h:mm a");
TimeZone utc = TimeZone.getTimeZone("America/New_York");
System.out.println(utc.getID());
GregorianCalendar gc = new GregorianCalendar(utc);
Date now = gc.getTime();
System.out.println(format.format(now));
您可以在Link
上看到更多时区输出
美国/纽约
2012年12月29日上午11:04
如果您不知道城市名称,那么您也可以按区域名称使用它,如下所示
DateFormat format = new SimpleDateFormat("MMMMM d, yyyy, h:mm a");
TimeZone cst = TimeZone.getTimeZone("US/Eastern");
System.out.println(cst.getID());
GregorianCalendar gc = new GregorianCalendar(cst);
Date now = gc.getTime();
format.setTimeZone(cst);
System.out.println(format.format(now))
<强>输出强>
US /东部
2012年12月29日,上午12:38
答案 4 :(得分:0)
我不确定我将要提供的解决方案,但我认为你可以尝试一下。 GMT(格林威治标准时间)是一个标准。我认为你可以把它作为基础并计算所需的时间。 GMT标准也很容易获得。
例如:在安装Windows XP或Windows 7等操作系统时,我们从下拉菜单中选择时间。我的观点是,以此为基础,您可以根据需要在NY-US和Tokyo-Japan之间找到时区之间的差异,反之亦然。
希望这有帮助。