4

私は日付を含む文字列を持っています"10:00 AM 03/29/2011"。これをJavaを使用して長いものに変換する必要があります.Dateは非推奨であり、時間を正しく与えていなかったため使用できません..オンラインで方法を調べましたが、まだありません幸運。Javaを初めて使用します。

4

2 に答える 2

8

問題は、データを解析してから、明確な理由もなくそれをいじり、文書化された戻り値Date.getYear()などを無視していることです.

おそらく、次のようなものが必要です。

private static Date parseDate(String text)
    throws ParseException
{
    SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a MM/dd/yyyy",
                                                       Locale.US);      
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    return dateFormat.parse(text);
}

本当に が必要な場合はlong、次を使用してください。

private static long parseDate(String text)
    throws ParseException
{
    SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm a MM/dd/yyyy",
                                                       Locale.US);      
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    return dateFormat.parse(text).getTime();
}

呼び出し元に対して値を解析できない場合にどうするかの決定をパントしていることに注意してください。これにより、このコードがより再利用しやすくなります。(本当に必要な場合は、いつでも別のメソッドを記述して、このメソッドを呼び出して例外を飲み込むことができます。)

いつものように、Java での日付/時刻処理にはJoda Timeを使用することを強くお勧めします。これは、java.util.Date/Calendar/etc よりもはるかにクリーンな API です。

于 2013-06-25T19:00:06.167 に答える