128

注意してください、私はエポックからミリを望んでいません。現在時計にあるミリ秒数が必要です。

たとえば、私はこのビットのコードを持っています。

Date date2 = new Date(); 
Long time2 = (long) (((((date2.getHours() * 60) + date2.getMinutes())* 60 ) + date2.getSeconds()) * 1000);

日付でミリ秒を取得する方法はありますか?これを行う別の方法はありますか?

注: System.currentTimeMillis()私が探しているものではないエポックからミリ秒を与えてくれます。

4

11 に答える 11

202

どういう意味ですか?

long millis = System.currentTimeMillis() % 1000;

ところで、Windowsは1969年までのタイムトラベルを許可していません

C:\> date
Enter the new date: (dd-mm-yy) 2/8/1969
The system cannot accept the date entered.
于 2012-08-02T20:27:52.950 に答える
26

カレンダーを使用する

Calendar.getInstance().get(Calendar.MILLISECOND);

また

Calendar c=Calendar.getInstance();
c.setTime(new Date()); /* whatever*/
//c.setTimeZone(...); if necessary
c.get(Calendar.MILLISECOND);

実際には、ほぼ常にSystem.currentTimeMillis()%1000に等しいと思います。誰かが飛躍的なミリ秒を持っているか、カレンダーが2番目の境界にないエポックで定義されていない限り。

于 2012-08-02T20:27:58.650 に答える
17
Calendar.getInstance().get(Calendar.MILLISECOND);
于 2012-08-02T20:30:46.433 に答える
15
于 2017-02-18T08:15:54.723 に答える
14

上記のいくつかを試しましたが、1000でリセットされるようです

これは間違いなく機能し、年も考慮に入れる必要があります

long millisStart = Calendar.getInstance().getTimeInMillis();

その後、必要に応じて終了時に同じことを行います。

于 2015-01-15T13:43:23.760 に答える
5
  1. long timeNow = System.currentTimeMillis();
  2. System.out.println(new Date(timeNow));

2014年4月4日金曜日14:27:05PDT

于 2014-04-04T21:33:25.673 に答える
3

ジョーダタイム

これを行うには、 Joda-Timeを使用できると思います。DateTimeクラスとそのgetMillisOfSecondメソッドを見てください。何かのようなもの

int ms = new DateTime().getMillisOfSecond() ;
于 2012-08-02T21:05:49.423 に答える
0

Java 8では、簡単に実行できます

ZonedDateTime.now().toInstant().toEpochMilli()

戻り値:1970-01-01T00:00:00Zのエポックからのミリ秒数

于 2017-02-18T05:16:54.990 に答える
0

私はjava8を使用してテストを行いました。ビルダーが常に0ミリ秒かかり、連結が26〜33ミリ秒で、1000の連結が繰り返される順序は関係ありません。

それがあなたのIDEでそれを試すのに役立つことを願っています

public void count() {

        String result = "";

        StringBuilder builder = new StringBuilder();

        long millis1 = System.currentTimeMillis(),
            millis2;

        for (int i = 0; i < 1000; i++) {
            builder.append("hello world this is the concat vs builder test enjoy");
        }

        millis2 = System.currentTimeMillis();

        System.out.println("Diff: " + (millis2 - millis1));

        millis1 = System.currentTimeMillis();

        for (int i = 0; i < 1000; i++) {
            result += "hello world this is the concat vs builder test enjoy";
        }

        millis2 = System.currentTimeMillis();

        System.out.println("Diff: " + (millis2 - millis1));
    }
于 2017-06-16T01:39:02.797 に答える
0

Java 8:

LocalDateTime toDate = LocalDateTime.now();
LocalDateTime fromDate = LocalDateTime.of(toDate.getYear(), toDate.getMonth(), 
toDate.getDayOfMonth(), 0, 0, 0);
long millis = ChronoUnit.MILLIS.between(fromDate, toDate);
于 2020-01-20T15:11:19.787 に答える
0

java.util.Calendarクラスを使用して、ミリ秒単位で時間を取得できます。例:

Calendar cal = Calendar.getInstance();
int milliSec = cal.get(Calendar.MILLISECOND);
// print milliSec

java.util.Date date = cal.getTime();
System.out.println("Output: " +  new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss:SSS").format(date));
于 2020-06-28T12:54:04.827 に答える