【问题标题】:formatting date in android在android中格式化日期
【发布时间】:2014-03-06 09:06:26
【问题描述】:

我正在尝试以新格式显示我已经拥有的日期,为此我使用SimpleDateFormat

Android 代码

String date = "2013-08-11 20:38 EDT";
SimpleDateFormat sf = new SimpleDateFormat("dd MMMM yyyy hh:mm a");
try {
    newDate = sf.format(new SimpleDateFormat("yyyy-MM-dd kk:mm z").parse(date));
} catch (ParseException e) {
    e.printStackTrace();
}

它显示: 2013 年 8 月 11 日晚上 8:38

但是,如果我在 JAVA 中运行相同的代码(作为普通的 JAVA 控制台应用程序)

JAVA

String date = "2013-08-11 20:38 EDT";
SimpleDateFormat sf = new SimpleDateFormat("dd MMMM yyyy hh:mm a");
String lDate = sf.format(new SimpleDateFormat("yyyy-MM-dd kk:mm z").parse(date));
System.out.println(lDate);

它显示: 2013 年 8 月 12 日上午 06:08

这是我需要显示的格式。

P.S. :我在 android 中收到警告说

要获取本地格式,请使用 getDateInstance()、getDateTimeInstance() 或 getTimeInstance(),或使用 new SimpleDateFormat(String template, Locale locale),例如 Locale.US 用于 ASCII 日期。

所以我尝试将 Locale.US 添加到 SimpleDateFormat 它再次显示 2013 年 8 月 11 日 08:38 PM 而不是 2013 年 8 月 12 日 06:08 AM p>

我的问题是: 如何在 android 中将日期显示为 2013 年 8 月 12 日上午 06:08。

【问题讨论】:

  • 那么,你的问题是什么?
  • 我希望我的日期在 Android 代码中显示为 2013 年 8 月 12 日上午 06:08,而不是 2013 年 8 月 11 日下午 8:38。
  • 您是否卡在 PM 到 AM 的变化中?
  • 在日期格式化程序上明确设置时区。
  • 检查你的安卓模拟器时间和本地电脑时间。

标签: android date date-format simpledateformat


【解决方案1】:

您的本地时间 IST 是 UTC+05:30,您的 Android 时间 EDT 是 UTC-04:00。它们共同增加了 9 小时 30 分钟的差异,从而解释了输出的差异。

将您的 Android 设备设置为 IST 时区以获得相同的输出。

或者,您可以在DateFormat 上调用setTimeZone() 来明确设置要使用的时区。

显式打印时区信息也有助于减少日期时间戳的歧义。

【讨论】:

  • 谢谢。将模拟器时区设置为 IST 即可解决问题。
  • 我还在SimpleDateFormat 中添加了Locale.getDefault() 作为第二个参数。这解决了问题。
【解决方案2】:
new SimpleDateFormat("MM/dd/yyyy HH:mm:ss.S", Locale.US)

你应该指定时区

【讨论】:

    【解决方案3】:

    试试这个代码

    SimpleDateFormat simple = new SimpleDateFormat("dd MMMM yyyy hh:mm a" , java.util.Locale.getDefault());
    

    【讨论】:

      猜你喜欢
      • 2014-10-22
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      相关资源
      最近更新 更多