【问题标题】:How to convert current date time from IST to EST timezone in Android?如何在 Android 中将当前日期时间从 IST 转换为 EST 时区?
【发布时间】:2014-08-09 06:05:19
【问题描述】:

如何使用其时区将 EST 时区日期(已转换并获取字符串)转换为日期格式? 我尝试更改时区,我得到了字符串格式的完美日期时间,但是当我将该字符串日期解析为日期格式时,它给了我本地 Android 系统时区时间。
感谢您的任何帮助...提前。

DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm aa");
TimeZone tz = TimeZone.getTimeZone("EST");
outputFormat.setTimeZone(tz);
String current_date =  outputFormat.format(date);
Date currentdate = outputFormat.parse(current_date);

它以字符串 (current_date) 为我提供 EST 日期格式。 它给了我 IST 格式日期(当前日期)

【问题讨论】:

  • 您需要使用valid time zone identifiers。如果 EST 指的是北美东部时间,请使用 "America/New_York"。如果 IST 指的是印度标准时间,请使用 "Asia/Kolkata"

标签: android date timezone


【解决方案1】:

您实际上是reversing 将字符串的输出返回到其原始时区,因此当您格式化ISTEST 的日期时,它将为您提供正确的指定时区但是当您parse 时,它会将其恢复为手机当前使用的当前时区。

解决方案:

使用SimpleDateFormat 的另一个实例并将其用于parse 字符串,以防止将其恢复为当前时区

样本:

Date date = new Date();
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm aa");
TimeZone tz = TimeZone.getTimeZone("IST");
outputFormat.setTimeZone(tz);
String current_date =  outputFormat.format(date);

SimpleDateFormat outputFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm aa");
Date currentdate = outputFormat2.parse(current_date);

【讨论】:

  • @KDOSHI 它会给你 IST 但时间本身是 EST
  • 你是对的,但它给了我这样的结果 Sat Aug 09 01:44:00 GMT+05:30 2014 如果我想比较两个日期,例如 if(expirydate.compareTo(currentdate)>0 ) 那么它是否有效!
  • 我认为您不能更改日期的 toString 格式,而是可以操作字符串,因此您不是比较日期,而是比较字符串并使用字符串的replace 方法将 GMT 替换为 EST
  • 在日期比较的情况下,字符串比较不是有效的解决方案。
  • @KDOSHI 无法更改日期的时区,因为它使用的是您设备的默认时区 getDefault
猜你喜欢
  • 1970-01-01
  • 2013-05-24
  • 2021-06-04
  • 1970-01-01
  • 2014-01-24
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
相关资源
最近更新 更多