2011-07-21 20 views
2

文字列が与えられたときに日付オブジェクトを返す小さなメソッドを書いています。以下に示すような方法は次のとおりです。2つの異なる文字列に同じ日付を与える単純な日付書式

public Date getDateObjectFromString(String dateAsString) 
{ 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
    Date tempDate = null; 

    try 
    { 
     tempDate = sdf.parse(dateAsString); 
    } 
    catch(ParseException pe) 
    { 
     //do some error reporting here 
    } 
    return tempDate; 
} 

すべてがOK取り組んでいるが、私は明確にしたいのですが、何かに遭遇しました。このメソッドに2つの異なる文字列を渡すと、デバッガで値を読み取るときに同じ日付が返されます。私は合格しています2つの文字列がある:あなたが、私は、デバッガでこれらの新しく作成された日付の可変出力を見ると、これらの2つの文字列がほぼ同一であり、見ることができるように

2011-07-21T19:44:00.000-0400 

2011-07-21T19:44:00.000-04:00 

が、それはまったく同じ日付を表示/いずれかの文字列の時間。したがって、デバッガで同じ日付が表示されている場合は、2番目の文字列(04:00)のコロンは何か違いがありますか?私は心配する必要がありますか、後で奇妙なバグが出現することなく進めることができますか?

+0

あなたはそれらを渡す前にすべての文字列を正規化できませんか?とにかくこれが最良の方法かもしれません –

+0

@citizen conn - yes ...しかし、もしあれば、その違いは何かと思っていました。ご返信ありがとうございます。 – dell116

答えて

0

SimpleDateFormatのAndroidドキュメントでは、RFC 822タイムゾーンを使用しています。私はAndroidは、このクラスで模倣しようとしているものであるのSimpleDateFormat、のJavadocに行った時、私はRFCについてthis noteを参照してください822のタイムゾーン:

RFC 822タイムゾーン:書式設定については、RFC 822の4桁タイムゾーン フォーマットが使用される:

RFC822TimeZone: 
     Sign TwoDigitHours Minutes 
TwoDigitHours: 
     Digit Digit 

TwoDigitHours 00及び23の他の定義の間でなければならない 一般的なタイムゾーンの通りです。解析のために、の一般的なタイムゾーンも を受け入れます。です。

そしてここ一般的なタイムゾーンのためのノートです:

一般的なタイムゾーン:彼らは 名前を持っている場合、タイムゾーンは、テキストとして解釈されています。 GMTオフセット値を表すタイムゾーンのために、以下 構文が使用されている:

GMTOffsetTimeZone: 
     GMT Sign Hours : Minutes 
Sign: one of   ^^^ 
     + - 
Hours: 
     Digit 
     Digit Digit 
Minutes: 
     Digit Digit 
Digit: one of 
     0 1 2 3 4 5 6 7 8 9 
が が

時間0と23の間でなければならず、分形式はロケールに依存している 00間及び59でなければならず、桁でなければなりませんUnicode標準の基本ラテン文字ブロック から取得しました。

一般的なタイムゾーンの定義では、「:」が使用されています。

これは、2つの文字列が異なるものの、同時に解析されることを意味します。

  1. RFC 822 - > 2011-07-21T19:44:00.000から0400
  2. 一般 - > 2011-07-21T19:44:00.000から04:00
+0

彼は最初にポールソニエにこの答えを与えていたのですが、MistorSquonkが来て、より良い説明をくれました(彼はまた、私にとって質問に答えました。そうすれば、この問題を完全に理解することができます。ありがとうございます。 – dell116

0

2番目の文字列のコロンは違いはありません。あなたは恐れることなく進めることができます。

1

これは、ウィキペディアのISOについてUTCからのオフセット±形式で指定された8601 'Time offsets from UTC'

[HH]こう言われる、[mm]で、±[HH] [mm]で、または±[HH] 。

基本的に、使用している両方のフォーマットが許可されているので、心配する必要はありません。

関連する問題