当前位置: 首页 > 面试题库 >

Android上的时间解析问题

阮星火
2023-03-14
问题内容

尝试解析时间字符串时出现解析异常02:22 p.m.

我具有以下转换功能:

public static long convertdatetotimestamp(String datestring, String newdateformat, String olddateformat){
    SimpleDateFormat originalFormat = new SimpleDateFormat(olddateformat,Locale.ROOT);
    SimpleDateFormat targetFormat = new SimpleDateFormat(newdateformat,Locale.ROOT);
    Date date = null;
    try {
        date = originalFormat.parse(datestring);
        String formattedDate = targetFormat.format(date);
        Date parsedDate = targetFormat.parse(formattedDate);
        long nowMilliseconds = parsedDate.getTime();

        return nowMilliseconds;
    } catch (ParseException e) {
        e.printStackTrace();
        return 0;
    }

}

在具有时间格式的另一个活动中调用该方法"02:22 p.m."olddateformat并且newdateformat是相同的:hh:mm a

它在日志中导致以下错误:

java.text.ParseException:无法解析的日期:“ 02:22 pm”(偏移量为6)

如何解决这个问题?时间就是上述格式。


问题答案:

进行以下更改对我来说效果很好。

 public static long convertdatetotimestamp(String datestring, String newdateformat, String olddateformat){
        DateFormat originalFormat = new SimpleDateFormat(olddateformat,Locale.ENGLISH);
        DateFormat targetFormat = new
                SimpleDateFormat(newdateformat,Locale.ENGLISH);
        Date date = null;
        try {
            date = originalFormat.parse(datestring.replaceAll("\\.", ""));
            String formattedDate = targetFormat.format(date);
            Date parsedDate = targetFormat.parse(formattedDate);
            long nowMilliseconds = parsedDate.getTime();

            return nowMilliseconds;
        } catch (ParseException e) {
            e.printStackTrace();
            return 0;
        }

    }

Locale.ENGLISH
可以使用您的语言环境,英语解决了我的问题。参考。

感谢您的回复和参考。



 类似资料:
  • 问题内容: 在Go中,尝试使用时间包的Parse方法将字符串转换为时,不会返回预期结果。似乎时区有问题。我想将UTC中的日期和时间更改为ISO 8601。 提前致谢! 问题答案: 使用特殊值进行时间格式化,并期望格式与这些值一起传递。 如果您传递正确的值,它将以正确的方式解析时间。 因此,过去的年份为2006年,月份为01年,然后继续这样…

  • 我试图用android的JodaTime库解析ISO格式的日期,但得到了错误的时区偏移量。 我的默认时区是“欧洲/莫斯科”,但结果是“1990-05-04T00:00:00.000 0400”,而它应该是“1990-05-03T23:00:00.000 0300”。Android版本是KitKat。 我做错了什么?

  • 我只想使用以下方法将时间字符串解析为: 我希望在之后获得指定时间的,但我得到了0(即)。 注意,我使用的是Howard Hinnant的日期库。

  • 我在将Jackson Parser依赖项添加到我的项目时遇到了麻烦。 目前我在我的build.gradle上使用这些代码行: 我唯一需要的类是我知道它在数据库包中的ObjectMapper。当我在gradle中添加这些行时,我按下了同步,一切都正常。 问题是在模拟器上运行项目,此错误出现在Android Studio中的消息中: 错误:任务': app: transformResourcesSus

  • 我从服务器收到了很奇怪的日期格式。它看起来是2017-03-07T15:08:01.513544Z,奇怪的部分是“Z”之前的最后六个字符,因为我在服务器的最多响应中只看到了三个毫秒的符号。我试图用解析它,掩码为yyyy-mm-dd't'hh:mm:ss.ss'z',它适用于除api 16(4.1)之外的所有android版本。在developer.android.com中,我看到了类似.sssxx

  • 我一直试图解析一个由google自动生成的XML(http://maps.googleapis.com)。 这正是我在程序中用作示例的XML: 我的最后一个问题是,我做错了什么?我得到的错误: