当前位置: 首页 > 知识库问答 >
问题:

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

简景焕
2023-03-14

我转换我的日期从服务器yyyyy-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

共有2个答案

莫宝
2023-03-14

实际上,代码中的日期转换正确,如下所示

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

转换日期:2015年4月2日,下午1:10:19//GMT 00:00

现在转换为您的设备默认本地,因为您设置输出Format.setTimeZone(TimeZone.getDefault());

输出日期:02-04-2015, 06:40:19pm//与您的设备区域设置。我想你的设备格林尼治标准时间05:30

卜季萌
2023-03-14

str_日期为24小时格式

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

 SimpleDateFormat inputFormat = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss", Locale.getDefault());
 类似资料:
  • 问题内容: string : 2014-04-25 17:03:13 使用SimpleDateFormat足以格式化吗?否则我将转向任何新的API? 我的预期结果是(印度区域): 问题答案: 记住对象没有固有的格式,您需要两个对象来产生想要的结果-一个要解析,另一个要格式化: 输出: 请注意,在格式中使用带引号的序列(例如),它被视为格式模式中的文字。

  • 使用SimpleDateFormat就足以格式化?否则我会转移到任何新的API? 我的预期结果是(印度区):

  • 问题内容: 这是我的查询: 这给了我: 表示116小时12分10秒。 相反,我想说的是4天20小时12分钟等 问题答案: 在我的示例中,将end_time和start_time用于固定的datetime值 根据以下两条评论,此解决方案仅适用于35天内的日期差异。如果您知道开始到结束之间有35天以上的时间,即一个月内有差异,请不要使用它。在这里使用TIMESTAMPDIFF的其他答案将起作用。

  • 我正在开发一个需要Hijri Date的应用程序,我使用了这里发布的内容将gregorian转换为Hijri Date。 它对我有用,但它给出了错误的日期,例如,当公历是2016年9月20日时,它在Hijri变成了1437年12月17日,这是错误的,它应该是1437年12月19日。 问题出在哪里?

  • 问题内容: 我正在尝试将字符串转换为日期格式,我尝试了很多方法来实现此目的,但是没有成功。我的字符串是“ 2012年1月17日”。我想将其转换为“ 2011-10-17”。有人可以告诉我这样做的方法吗?如果您通过示例工作过,那将是真正的帮助! 问题答案:

  • 2014年4月28日12:40:04 为什么?我做错了什么?我该怎么修好它?