2

日付のフォーマットに問題があります。

From : EEE, d MMM yyyy HH:mm:ss Z (例: Mon, 05 Jan 2014 15:10:00 +0200)

To : dd/MMM/yyyy HH:mm (例: 2014/05/01 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 の解析不能な日付

ここでいくつかの助けがあればいいでしょう ;)

4

4 に答える 4

5

2回の変換が必要です。例えば:

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) {
        }
    }
于 2014-02-07T09:43:56.123 に答える
1

以下のコードを試してください。

String parseStringDate(String sqlDate) {
    String strDate = "";
    java.util.Date utilDate;

    SimpleDateFormat sqlDateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
    try {
        Calendar calTempDate = Calendar.getInstance();
        utilDate = sqlDateFormat.parse(sqlDate);

        calTempDate.setTime(utilDate);
        strDate = new SimpleDateFormat("dd/MMM/yyyy HH:mm").format(calTempDate.getTime());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return strDate;
}
于 2014-02-07T09:46:27.887 に答える
1

これを試して

SimpleDateFormat form = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
SimpleDateFormat postFormater = new SimpleDateFormat("dd/MMM/yyyy HH:mm");

String inputdate = "Mon, 05 Jan 2014 15:10:00 +0200";

Date date = null;

    try {
        date = form.parse(inputdate);

    } catch (ParseException e) {
        e.printStackTrace();

    }

String resultdate = postFormater.format(date);
于 2014-02-07T09:43:57.027 に答える
0
于 2016-12-11T07:11:38.510 に答える