2017-06-12 15 views
-11

yyyy-MM-ddでDateオブジェクトにミリ秒を変更する方法2017-04-12 23:14のようなHH:mm:ss形式:52?yyyy-MM-ddで日付オブジェクトに変更する方法HH:mm:ss形式

+0

入力ミリ秒を入力してください。 –

+6

'Date'オブジェクトにはフォーマットがないことを理解していますか? https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/ –

+0

この回答が役立つことを願っています。https://stackoverflow.com/questions/4142313/java-変換ミリ秒時の書式 –

答えて

0

このサンプルコードを試すことができます。

public class MillDateConverter { 

    public static String dFormat = "yyy-MM-dd HH:mm:ss"; 
    private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dFormat); 


    public static void main(String[] args) { 
     Calendar calendar = Calendar.getInstance(); 
     long milliSec=Long.parseLong("1086073200000"); 
     System.out.println(milliSec); 
     calendar.setTimeInMillis(milliSec); 
     System.out.println(simpleDateFormat.format(calendar.getTime())); 

    } 

} 
+0

これを行うことで、Stringを取得します。simpleDateFormat.format(calendar.getTime())はStringを返しますが、java.utill.Dateオブジェクトが必要です。 Stringを取得した後にsimpleDateFormat.format(calendar.getTime())を実行しようとしましたが、その後Tueを取得しています。Apr 25 23:52:17 IST 2017形式が必要ありません。 –

+0

あなたは不可能か、 、自己矛盾する@NilenduKumar。 'java.util.Date'オブジェクトは持っておらず、フォーマットを持てません。それは時間の要点です。 –

2

これはできません。いくつかの理由から。

TL; DRDateを使用しないでください。Instantを使用してください。これらのどちらにもフォーマットはありません。文字列への書式設定はタイムゾーンによって異なりますので、タイムゾーンを選択する必要があります。

最初に、yyyy-MM-dd HH:mm:ssという形式のjava.util.Dateオブジェクトを要求しているとの議論から理解しています。 Dateオブジェクトにはフォーマットが含まれておらず、フォーマットもありません。ここで理解しようとするべきことは、データそのものとユーザーへのデータの提示の違いです。 intは値25389を保持することができますが、形式25389では保持されません(実際は内部表現は25389とはかなり異なります)。同一のintは、25389,000025389,25,389または+25389としてユーザに提示することができ、多くの可能性のうちのいくつかを挙げるに過ぎない。書式設定はintの外で行われ、intは同じままです。

同様に、Dateオブジェクトもある時点を保持します。同じ日付は、たとえば2017-04-12 23:14:52または2017年4月12日11:14:52 PMにフォーマットされます。異なるタイムゾーンにフォーマットされている場合もあります。これは、システムに異なるタイムゾーンのユーザがいる場合に適しています。あるいは、ユーザにカレンダーの葉および/または時間を示す時計を示すことができる。繰り返しますが、書式設定はDateの外で行われ、Dateはまったく同じです。

タイムゾーンの問題を詳述すると、同じミリ秒値で表される同じ時点は、2017-04-12 17:44:52(UTC、2017-04-12 19:44:52)にフォーマットされます。私のタイムゾーン、2017-04-12 23:14:52アジア/コルカタタイムゾーンまたは2017-04-13 05:44:52太平洋/オークランドタイムゾーン。最後のケースでは日付は同じではないことに注意してください。したがって、要求したフォーマットにミリ秒を変更する方法は1つだけではありません。私たちがあなたを助けることができる前に、あなたがそれを望む時間帯を知る必要があります。

それでは、私はあなたが必要と考えていることは一つのことではありませんが、あなたのプログラムの中での時間のあなたのポイントを保存するには、2つの

  1. 方法。
  2. yyyy-MM-ddの文字列に時刻を書式設定する方法。あるタイムゾーンのユーザーのHH:mm:ss形式。時間にあなたのポイントを格納するために

、ミリ秒longはすでに

  • java.time.Instantオブジェクトを持っている価値

    • のいずれかを使用します。

    なぜ私はjava.util.Dateと言及していませんか?このクラスは古くなっているためです。そのデザインは非常に手早く面倒であることが判明しました。彼らは、ほとんどの方法を廃止し、java.util.Calendarを導入して修復しようとしましたが、うまくいきませんでした。最後に、Joda-Timeとして知られる図書館の経験をもとに、彼らはJava 8のjava.timeクラスを2014年に導入しました。これは3年前の記事であり、数えています。だから私たちは今までにDateを投げて、友人たちを船外に持ち、新しいクラスを使い始めるべきです。だからDateを超えるInstantを好む。 Instantにあなたのミリ秒を変更する

    は簡単です:

    long milliseconds = 1492019092000L; 
        Instant pointInTime = Instant.ofEpochMilli(milliseconds); 
    

    ユーザーのための文字列にあなたの瞬間をフォーマットするために私が言ったように、我々は、タイムゾーンを必要とします。その後

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"); 
        String formattedDateTimeString = pointInTime.atZone(ZoneId.of("Asia/Kolkata")) 
          .format(formatter); 
    

    は、だから、私はZoneId.of("Asia/Kolkata")を入れて希望の時間帯を記入する必要があります。 JVMの現在のタイムゾーン設定を使用する場合は、ZoneId.systemDefault()と入力してください。ただし、同じJVMで実行されている無関係なプログラムであっても、タイムゾーンの設定が変更される可能性があるので、これに頼ることは壊れやすいかもしれません。 (

    Date myOutdatedDateInstance = Date.from(pointInTime); 
    

    :上に読んだ後、あなたが本当に主張する場合

    上記のコードの結果は、ここでは上からjava.util.Dateを取得する方法ですが、

    2017-04-12 23:14:52 
    

    PSのような文字列であります繰り返すために私を許して、それはまだ、それは不可能です)希望の形式を持っていません。

  • 関連する問題