java - 将一些字符串日期解析为另一种格式

标签 java android date simpledateformat android-date

我在格式化日期时遇到问题。

来自:EEE, d MMM yyyy HH:mm:ss Z(示例:2014 年 1 月 5 日星期一 15:10:00 +0200)

收件人:dd/MMM/yyyy HH:mm(例如:05/01/2014 15:10)

这是我尝试过的:

private String formatDate(String date) {
    SimpleDateFormat format = new SimpleDateFormat("dd/MMM/yyyy HH:mm");
    Date dateResult = null;
    try {
        dateResult = format.parse(date);
    }
    catch (java.text.ParseException e) {
        Log.e(TAG, "", e);
    }
    return dateResult.toString();
}

我得到异常:在偏移量 0 处无法解析的日期

这里有一些帮助会很好,谢谢 ;)

最佳答案

您需要两次转换。例如:

private String formatDate(String date) {
    SimpleDateFormat formatFrom = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z ");

    java.util.Date tmpDate = formatFrom.parse(date);
    SimpleDateFormat formatTo = new SimpleDateFormat("dd/MMM/yyyy HH:mm");
    return formatTo.format(tmpDate);
}

对于我自己的 RSS 解析器,我使用以下代码来解析不同的日期格式:

    if (value.contains("+")) {
        value = value.substring(0, value.lastIndexOf("+") - 1);
    }

    String[] patterns = {//"EEE, dd MMM yyyy hh:mm:ss UTC",
            "yyyy.MM.dd G 'at' HH:mm:ss z",
            "EEE, MMM d, ''yy",
            "yyyyy.MMMMM.dd GGG hh:mm aaa",
            "EEE, d MMM yyyy HH:mm:ss Z",
            "yyMMddHHmmssZ",
            "d MMM yyyy HH:mm:ss z",
            "yyyy-MM-dd'T'HH:mm:ss",
            "yyyy-MM-dd'T'HH:mm:ss'Z'",
            "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
            "yyyy-MM-dd'T'HH:mm:ssZ",
            "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
            "yyyy-MM-dd'T'HH:mm:ssz",
            "yyyy-MM-dd'T'HH:mm:ss.SSSz",
            "EEE, d MMM yy HH:mm:ssz",
            "EEE, d MMM yy HH:mm:ss",
            "EEE, d MMM yy HH:mm z",
            "EEE, d MMM yy HH:mm Z",
            "EEE, d MMM yyyy HH:mm:ss z",
            "EEE, d MMM yyyy HH:mm:ss Z",
            "EEE, d MMM yyyy HH:mm:ss ZZZZ",
            "EEE, d MMM yyyy HH:mm z",
            "EEE, d MMM yyyy HH:mm Z",
            "d MMM yy HH:mm z",
            "d MMM yy HH:mm:ss z",
            "d MMM yyyy HH:mm z",
            "d MMM yyyy HH:mm:ss z"};

    for (int i = 0; i < patterns.length; i++) {
        SimpleDateFormat sdf = new SimpleDateFormat(patterns[i], Locale.ENGLISH);
        try {
            pubdate = sdf.parse(value);

            break;
        } catch (Exception e) {
        }
    }

关于java - 将一些字符串日期解析为另一种格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21624110/

相关文章:

java - GoogleMap Android API V2 捕获错误

java - 如何强制 dateFormat 将指定数量的字符视为有效?

javascript - 在 "Fri May 10 2019 00:00:00 GMT+0800"中添加一天,并使用 JavaScript 以相同的格式获得最终答案

java - jar 与 .java 文件的使用以及编译器的奇怪行为

java - 返回空列表时良好的编程实践

java - Pixelart 的抗锯齿算法

android - 如何在 Android 的 QuickAction 对话框中添加 Listview

java - 我可以在没有粘性 session 的情况下使用 Thymeleaf 模板 + 绑定(bind)吗?

Android Studio : An exception has occurred in the compiler (1. 8.0_242-release)

excel - 以数字格式从日期输出 MONTH() 输出正确,但作为书面日期是错误的