2

これのJavaDateTime形式は何ですか?

11月26日月曜日13:57:03SGT2012

この文字列をDateに変換し、「yyyy-MM-ddHH:mm:ss」などの別の形式に変換したいと思います。

日付から文字列に変換するのは難しくありません。

フォーマットフォーマッター=newSimpleDateFormat( "yyyy-MM-dd HH:mm:ss");

しかし、「Mon Nov 2613:57:03SGT2012」を日付形式に変換するための有効な形式が見つかりません...

=====

見つかった解決策:

DateFormat oldDateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Format newDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date oldDate = oldDateFormat.parse(oldTimeString);
String newDateString = newDateFormat.format(oldDate);
4

4 に答える 4

4

これはうまくいきます、EEE MMM dd HH:mm:ss z yyyy

の javadoc に例がありSimpleDateFormatます。http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.htmlを参照してください。

于 2012-11-29T07:02:01.910 に答える
3

さて、このコードはいくつかの出力を生成します

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

public class Test {

    public static void main(String[] args) throws ParseException {
        DateFormat inputFormat = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy",
                                                      Locale.US);
        DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
                                                       Locale.US);
        String text = "Mon Nov 26 13:57:03 SGT 2012";

        Date date = inputFormat.parse(text);
        System.out.println(outputFormat.format(date));
    }
}

...しかし、出力にはデフォルトのシステムタイムゾーンが使用されます。どのタイム ゾーンで結果を取得するかが明確ではありません。タイム ゾーンを格納するものがないため、テキストで指定された元のDateタイム ゾーンを保持することが難しくなるため、使用するゾーンを自分で決定する必要があります。

Locale.US入力と出力の両方で指定したことに注意してください。これは通常、カスタム形式を指定する場合、特に月と日の名前に依存する入力の場合に適しています。

コメントで述べたように、日付/時刻の作業が可能であれば、 Joda Timeを使用することを個人的にお勧めします... /よりもはるかに優れた API です。残念ながら、Joda Time はタイム ゾーンを解析することができません - のドキュメントから:DateCalendarDateTimeFormat

ゾーン名: タイム ゾーン名 ('z') は解析できません。

また、入力データに何らかの影響を与える方法がある場合は、タイム ゾーンの略語を使用しないようにすることが適切なステップになることにも注意してください。

于 2012-11-29T07:02:21.503 に答える
3

SimpleDateFormat.parse()文字列を に変換する関数を試してくださいDate

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date parseDate = sdf.parse(strInput);

解析例外に注意してください

于 2012-11-29T07:05:37.117 に答える
0
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CPDateTime 
{
    public static void main(String[] args)
    {
        Calendar cal  = Calendar.getInstance();
        //subtracting a day
        //cal.add(Calendar.DATE, -1);
        cal.add(Calendar.MONTH, -1);
        SimpleDateFormat prev_day = new SimpleDateFormat("dd");
        SimpleDateFormat prev_month = new SimpleDateFormat("MM");
        SimpleDateFormat prev_year = new SimpleDateFormat("YYYY");   
        String prev_day_str = prev_day.format(new Date(cal.getTimeInMillis()));
        System.out.println(prev_day_str);
        String prev_month_str = prev_month.format(new Date(cal.getTimeInMillis()));
        System.out.println(prev_month_str);
        String prev_year_str = prev_year.format(new Date(cal.getTimeInMillis()));
        System.out.println(prev_year_str);
    }
}
于 2016-01-27T09:46:58.373 に答える