5

GMT を使用して日付を表す文字列を解析しようとしていますが、PC のタイムゾーン (太平洋) で出力されます。以下を実行すると、以下の出力が得られます。パースを取得してGMT日付を返す方法についてのアイデアはありますか? 以下を見ると、format.setTimeZone(TimeZone.getTimeZone("GMT")); を使用してタイムゾーンを設定しています。しかし、それは望ましい結果を生み出していません。

以下のコードからの出力:

2012 年 10 月 29 日(月)05:57:00 PDT

 package javaapplication1;

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.TimeZone;


    public class JavaApplication1 {

        public static void main(String[] args) throws ParseException {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
            format.setTimeZone(TimeZone.getTimeZone("GMT"));
            System.out.println(format.parse("2012-10-29T12:57:00-0000"));
        }
    }
4

5 に答える 5

8

format.setTimeZone(TimeZone.getTimeZone("GMT"));文字列を日付にフォーマットする際に使用されているフォーマッタで使用しています。

      Date date = format.parse("2012-10-29T12:57:00-0000");

解析された処理2012-10-29T12:57:00-0000GMT値でしたが、印刷dateにローカルタイムゾーンを使用して印刷しているため、違いに気づいています。

で日付を印刷したい場合はGMT、次を使用してください。

    String formattedDate = format.format(date);

を印刷しformattedDateます。これは になりますGMT

    System.out.println(formattedDate);
于 2012-10-31T20:16:10.520 に答える
0

完全な作業例

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

public class Main
{
    public static void main(String[] args)
    {
        final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss z", Locale.ENGLISH);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println(sdf.format(new Date())); 
        // ^^^ note printing the results of sdf.format() 
        //     not a raw `Date`
    }
}

result :31-10-2012 08:32:01 UTC 実際に出力しているものに注意してください!

于 2012-10-31T20:11:38.030 に答える
0
System.out.println(format.parse("2012-10-29T12:57:00-0000"));

日付を GMT として解析し、Date オブジェクトを返します。次に、それを (デフォルトの toString() メソッドを使用して) 出力します。これは、コンピューターの設定を使用するだけです。したがって、次を使用する必要があります。

Date parsedDate=format.parse("2012-10-29T12:57:00-0000");
System.out.println(format.format(parsedDate));
于 2012-10-31T20:14:39.603 に答える
0

これを試して、

public static String converterGMTToLocal(String datahora_gmt)
{
    try {
        SimpleDateFormat fmt = new SimpleDateFormat("YYYY-MM-dd HH:mm");
        Calendar cal = Calendar.getInstance();
        cal.setTime(fmt.parse(datahora_gmt));
        cal.add(Calendar.HOUR, -3);

        return fmt.format(cal.getTime());

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return e.getMessage();
    }
}

プロジェクトの値を変更します...適切な変更を行います

于 2015-09-25T16:24:59.843 に答える