14

「Tue May 21 14:32:00 GMT 2012」という文字列があります。この文字列を 2012 年 5 月 21 日午後 2 時 32 分という形式で現地時間に変換します。SimpleDateFormat("MM dd, yyyy hh:mm a").parse() を試しましたが、例外がスローされました。それで、私は何をすべきですか?

例外は、「報告されていない例外 java.text.ParseException; キャッチするか、スローするように宣言する必要があります」です。

ラインでDate date = inputFormat.parse(inputText);

TextMate で実行したコード:

public class test{
    public static void main(String arg[]) {
        String inputText = "Tue May 22 14:52:00 GMT 2012";
        SimpleDateFormat inputFormat = new SimpleDateFormat(
            "EEE MMM dd HH:mm:ss 'GMT' yyyy", Locale.US);
        inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
        SimpleDateFormat out = new SimpleDateFormat("MMM dd, yyyy h:mm a");
        Date date = inputFormat.parse(inputText);
        String output = out.format(date);
       System.out.println(output);
    }
}
4

4 に答える 4

26

解析用に指定した書式文字列が、実際に取得したテキスト形式と一致しません。最初に解析してからフォーマットする必要があります。あなたが望むように見えます:

SimpleDateFormat inputFormat = new SimpleDateFormat(
    "EEE MMM dd HH:mm:ss 'GMT' yyyy", Locale.US);
inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));

SimpleDateFormat outputFormat = new SimpleDateFormat("MMM dd, yyyy h:mm a");
// Adjust locale and zone appropriately

Date date = inputFormat.parse(inputText);
String outputText = outputFormat.format(date);

編集:これは、サンプル入力を含む、短いが完全なプログラムの形式の同じコードです。

import java.util.*;
import java.text.*;

public class Test {
    public static void main(String[] args) throws ParseException {
        String inputText = "Tue May 21 14:32:00 GMT 2012";
        SimpleDateFormat inputFormat = new SimpleDateFormat
            ("EEE MMM dd HH:mm:ss 'GMT' yyyy", Locale.US);
        inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));

        SimpleDateFormat outputFormat =
            new SimpleDateFormat("MMM dd, yyyy h:mm a");
        // Adjust locale and zone appropriately
        Date date = inputFormat.parse(inputText);
        String outputText = outputFormat.format(date);
        System.out.println(outputText);
    }
}

その正確なコードをコンパイルして実行できますか?

于 2012-05-23T17:54:22.210 に答える
3

解析に使用するフォーマッタは、期待する形式に定義する必要があります。指定した値に対して機能する例を次に示しますが、入力に対していくつかのエッジケースがどのように機能するかによって、変更する必要がある場合があります。

String date = "Tue May 21 14:32:00 GMT 2012";
DateFormat inputFormat = new SimpleDateFormat("EE MMM dd HH:mm:ss zz yyy");
Date d = inputFormat.parse(date);
DateFormat outputFormat = new SimpleDateFormat("MMM dd, yyy h:mm a zz");
System.out.println(outputFormat.format(d));
于 2012-05-23T18:05:01.410 に答える
1

SimpleDateFormat.parseメソッドは、解析例外をスローします。

あなたが得ている例外はあなたにこれを告げることです...

例外は、「報告されていない例外java.text.ParseException。キャッチするか、スローするように宣言する必要があります。」です。

解析を行う行をtry-catchでラップすると、ゴールデンになります。

Date d=null;
try{
    d = inputFormat.parse(date);
catch(ParseException e){
   // handle the error here....
}

R

于 2012-05-23T19:54:34.023 に答える
1
于 2016-08-23T21:21:04.180 に答える