2013-05-13 11 views
55

ファイルの名前を現在の日付と時刻(ミリ秒単位)で保存しようとしています。ファイルを読みながら、私は、最新のone.Hereコードアンドロイドで現在の日付時間をミリ秒単位で取得する方法

Calendar rightNow = Calendar.getInstance(); 

    long offset = rightNow.get(Calendar.ZONE_OFFSET) + rightNow.get(Calendar.DST_OFFSET); 

    String sinceMidnight = Long.toString((rightNow.getTimeInMillis() + offset) % (24 * 60 * 60 * 1000)); 

    return sinceMidnight+"_"+Filename; 
+0

良いことではないだろうと思います。しかし、何が問題なのですか? –

+0

@PankajKumar最新のものを読む方法 – Supreet

+1

@ Supreet- System.currentTimeMillis(); - 現在のシステム時間をミリ秒単位で返します。 – TheFlash

答えて

19
で読みたい

問題はSystem. currentTimeMillis();は1970-01-01T00からのミリ秒数を返すことである:00:00Zを、しかしnew Date()は、現在のローカル時間を与えます。 ZONE_OFFSETとDST_OFFSETをカレンダークラスから追加すると、UTCで時刻が表示されます。

Calendar rightNow = Calendar.getInstance(); 

// offset to add since we're not UTC 

long offset = rightNow.get(Calendar.ZONE_OFFSET) + 
    rightNow.get(Calendar.DST_OFFSET); 

long sinceMidnight = (rightNow.getTimeInMillis() + offset) % 
    (24 * 60 * 60 * 1000); 

System.out.println(sinceMidnight + " milliseconds since midnight"); 
+1

この回答はOPとどう違うのですか? –

+0

@sunil kumar rightNow.getTimeInMillis()はミリ秒単位で現地時間を返しますので、offsetはrightNow.getTimeInMillis()から減算されます。そうでなければ、(GMT + N)のタイムゾーンでは動作しません。 long sinceMidnight =(rightNow.getTimeInMillis()+ offset)% (24 * 60 * 60 * 1000); – muak

0

私はあなたがこの

long time= System.currentTimeMillis(); 

を使用することができると思う。この

Calendar c = Calendar.getInstance(); 
    int mseconds = c.get(Calendar.MILLISECOND) 

代替が

Calendar rightNow = Calendar.getInstance(); 

long offset = rightNow.get(Calendar.ZONE_OFFSET) + 
     rightNow.get(Calendar.DST_OFFSET); 
long sinceMid = (rightNow.getTimeInMils() + offset) % 
     (24 * 60 * 60 * 1000); 

    System.out.println(sinceMid + " milliseconds since midnight"); 
+0

この参考情報を参照してくださいhttp://developer.android.com/reference/android/os/SystemClock.html#setCurrentTimeMillis%28long%29 –

-1
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(new Date()); 
int mSec = calendar.get(Calendar.MILLISECOND); 
195

だろうしてみてくださいミリ秒モードで現在の時刻を返します。これは確かにここで

long time= System.currentTimeMillis(); 
android.util.Log.i("Time Class ", " Time value in millisecinds "+time); 

に動作します、あなたが.Check Hereミリ秒値で

EDIT何の疑いを持った場合

05-13 14:38:03.149: INFO/Time Class(301): Time value in millisecinds 1368436083157 

上記の関数を使用して、私のlogcatです:タイムゾーンを私がするために使用コードIST(+05:30)をデモするため、に記載されているmillisecondsをチェックして、他のタイムゾーンのログの時刻と一致するように指定すると、IST ゾーン。

EDIT:これは簡単なアプローチです.butあなたは、時間帯やその他の詳細情報が必要な場合、私は、これは十分に Also See this approach using android api support

関連する問題