2011-07-13 24 views
0

私は現在の時刻を特定の形式で取得し、タイムスタンプを印刷するために、以下のコードを使用しています。日付オブジェクトが正しい時刻値を返さない

SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd hh:mm:ss.ms"); 
    String formattedDate = dateFormat.format(new Date()); 
    Date curDate = null; 
    try { 
     curDate = dateFormat.parse(formattedDate); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Log.i(Config.TAG,"curDate...... "+curDate); 

が、私はLogcat出力「CURDATE .....」「月7月13日4時11分51秒EDT 1970」 が、上記のステートメントでは分が間違っている示しているを見たとき。 私のAndroid搭載端末では、時刻が「04:40 AM」と表示されています。

上記の方法で「29」分の遅延が発生するのはなぜですか?

P1。私に教えてくださいこれを行う適切な方法です。 私は何かを逃したかどうか教えてください。

答えて

2

私はそれがあなたのフォーマット文字列の "ms"の部分だと思っています。混乱するものです。代わりに「SS」を意味すると思います。また、あなたはおそらく代わりに、12時間の24時間形式をしたいあなたはAM/PM指定子を持っていないことを考える:

SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss.SS"); 

(あなたはが本当に方法により、年間たくありません?)

+0

+1ですが、ms(実際は分と秒)を使用すると「遅延」があるのはまだ不思議です。 – Fortega

+0

@フォルテガ:「ms」を指定すると、「1桁の分、1桁の秒」と表示されます。それは遅延ではなく、あなたが本当に望んでいない方法で値を解析するだけです。私は、 "mm"と "ss"が既に指定されていることを前提にしてbarfする必要があると主張したいと思いますが、それは別の問題です... –

+0

それは確かにいくつかの解析問題です。私はちょうど正確にここで間違って何が不思議だった。説明のために私の答えを見てください... – Fortega

0

Jonの答えに追加する:あなたは次のことをしようとした場合

:問題の説明

SimpleDateFormat dateFormat = new SimpleDateFormat("ms"); 
String formattedDate = dateFormat.format(new Date()); 
Date curDate = dateFormat.parse(formattedDate); 
System.out.println(formattedDate); 
System.out.println(curDate); 

を、それがのようなものを出力します

3632 
Thu Jan 01 00:13:32 CET 1970 
これは、パーサーが '3'を分とし、 '632'を秒として脅かすためです。
3分632秒は13分32秒です。

関連する問題