android - 在 Android 中将日期格式转换为 AM/PM 时输出错误

标签 android date datetime

我将从服务器接收的日期 yyyy-mm-dd hh:mm:ss 转换为 dd-mm-yyyy hh:mm:ss am/pm

我编写了以下代码来做到这一点..

SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefault());
SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy, hh:mm:ss a", Locale.getDefault());

 String out = "";
 inputFormat.setTimeZone(TimeZone.getTimeZone("UTC")); //Also tried GMT+00:00

 Date date = inputFormat.parse(str_date);

 outputFormat.setTimeZone(TimeZone.getDefault());
 out = outputFormat.format(date);

 L.c("The date format for " + str_date + " is " + out);

 return out;

一切正常,除非您注意到下面的控制台日志 06:21:48 am、06:09:44 am 以及少数其他日志显示 AM 而不是 PM。

我的代码有问题吗?还是有什么bug?

04-02 19:13:37.381    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 13:10:19 is 02-04-2015, 06:40:19 pm
04-02 19:13:37.414    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 13:02:22 is 02-04-2015, 06:32:22 pm
04-02 19:13:37.436    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 12:51:48 is 02-04-2015, 06:21:48 am
04-02 19:13:42.191    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 12:39:44 is 02-04-2015, 06:09:44 am
04-02 19:13:43.484    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 12:17:48 is 02-04-2015, 05:47:48 am
04-02 19:13:44.990    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 12:10:30 is 02-04-2015, 05:40:30 am
04-02 19:13:56.347    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 12:00:00 is 02-04-2015, 05:30:00 am
04-02 19:13:57.228    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 11:58:13 is 02-04-2015, 05:28:13 pm
04-02 19:13:57.467    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 11:55:18 is 02-04-2015, 05:25:18 pm
04-02 19:13:58.332    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 11:48:13 is 02-04-2015, 05:18:13 pm
04-02 19:13:58.563    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 11:42:28 is 02-04-2015, 05:12:28 pm
04-02 19:14:00.822    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-02 09:54:22 is 02-04-2015, 03:24:22 pm
04-02 19:14:01.009    4815-4815/in.dummy.app D/ARR﹕ The date format for 2015-04-01 11:30:33 is 01-04-2015, 05:00:33 pm

最佳答案

str_date 采用 24 小时格式

H 小时(0-23), h 上午/下午 (1-12) 的小时

 SimpleDateFormat inputFormat = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss", Locale.getDefault());

关于android - 在 Android 中将日期格式转换为 AM/PM 时输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29414881/

相关文章:

android - OrientationEventListener 与 Display.getRotation

java - 将 Activity 扩展到 AppCompatActivity

java - 将对象从服务发送到 Activity (无法编码非 Parcelable)

date - 从用户的本地时间到网站上的UTC的日期/时间转换

java - 安卓Java : Difference between current time and specific time in future is calculated wrong

python - 如何在 Anaconda 中安装 nltk_contrib

Android Target API - 如何测试我能走多低?

vba - 使用索引从字符串解析 Visual Basic 日期对象

c# - 日期比较 - 如何检查是否已经过去 20 分钟?

mysql - ISO 8601 日期进入 MySQL 数据库 - 只是无法让它工作