Android pm出现错误,在Android中将日期格式转换为AM / PM时输出错误

我将从服务器收到的日期转换为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。

我的代码是错的吗? 或者有任何错误?

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

在将String解析为Date之前,您尝试以UTC格式解析的字符串是什么? 如果您使用UTC进行转换,则需要以24小时格式SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());解析日期

stackoverflow.com/questions/23751172/…

@ inner_class7我猜..我从服务器收到它..它只是以"2015-04-02 12:51:48"格式给我作为字符串的日期

@GaurawYadav兄弟,我的问题是"输出错误",而不是如何将日期转换为AM / PM

服务器使用的是什么时区?

str_date是24小时格式

H小时(0-23),

h上午/下午(1-12)

SimpleDateFormat inputFormat = new SimpleDateFormat(

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

哦,是的..我很傻:D谢谢!!

实际上你的代码中的日期转换正确如下

输入日期:2015-04-02 13:10:19 // GMT + 00:00

转换日期:02-04-2015,01:10:19 PM // GMT + 00:00

现在转换为您的设备默认本地,因为您设置

outputFormat.setTimeZone(TimeZone.getDefault());

输出日期:02-04-2015,06:40:19 pm //使用您的设备Locale。 我认为您的设备GMT + 05:30

谢谢..我找到解决方案的问题是我将转发日期24小时转换为12小时SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss",Locale.getDefault()); //它应该是HH而不是......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值