android - Android 上的 JodaTime 日期和时间解析

标签 android jodatime

我正在尝试解析日期“10/13/2014 08:06 AM” 这是我的代码:

public static LocalDateTime parseDateTime(String dateAndTime) {
    try {
        if (dateAndTime.contains("-")) {
            return LocalDateTime.parse(dateAndTime.toUpperCase(), DateTimeFormat.forPattern("yyyy-MM-dd hh:mm aa"));
            //return DateTimeFormat.forPattern("yyyy-MM-dd hh:mm aa").parseDateTime(dateAndTime.toUpperCase());
        } else {
            return LocalDateTime.parse(dateAndTime.toUpperCase(), DateTimeFormat.forPattern("MM/dd/yyyy hh:mm aa"));
            //return DateTimeFormat.forPattern("MM/dd/yyyy hh:mm aa").parseDateTime(dateAndTime.toUpperCase());
        }
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
        return null;
    }
}

我的解析器失败:

java.lang.IllegalArgumentException: Invalid format: "10/13/2014 08:06 AM" is malformed at "AM"

请帮忙调查。

我使用的是 Android 4.4.4 和 JodaTime 2.3

最佳答案

我不知道您的区域设置是什么,但我可以使用 new Locale("hi", "IN") 之类的区域设置重现您的问题(我自己的系统区域设置不同)。因此,您的问题的解决方案是将区域设置指定为英语,因为像“AM”这样的文本是特定于区域设置的并且主要用于英语。

LocalDateTime ldt =
  LocalDateTime.parse(
    dateAndTime.toUpperCase(), 
    DateTimeFormat.forPattern("MM/dd/yyyy hh:mm aa").withLocale(Locale.ENGLISH));

关于android - Android 上的 JodaTime 日期和时间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348567/

相关文章:

java - GSON Joda 时间序列化器是否有标准实现?

android - 如果只是项目的内容发生变化,PagedListAdapter 不会更新列表

java - 将 sha-1 哈希从 C# 移植到 Android/java

android - 动态更改 Listview 的高度 Android

java - jodatime-PeriodFormatter : suffix only for day/days

java - JodaTime-IllegalArgumentException : Invalid format: "Mon, 29 Oct 2018 15:17:19 +0000"

java - 在 joda 中覆盖一周的第一天?

android - Vimeo 嵌入显示白屏/缺少进度条

android - 在 NumberPicker 上禁用软键盘

java - 我如何获得 31 天前的日期?