Kode di bawah memberikan saya waktu saat ini. Tapi itu tidak mengatakan apa-apa tentang milidetik.
public static String getCurrentTimeStamp() {
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy
Date now = new Date();
String strDate = sdfDate.format(now);
return strDate;
}
Saya mendapatkan tanggal dalam format2009-09-22 16:47:08
(YYYY-MM-DD HH:MENIT:Detik).
Tapi saya ingin mengambil waktu saat ini dalam format2009-09-22 16:47:08.128
((YYYY-MM-DD HH:MENIT:Detik. Ms)- di mana 128 menceritakan milidetik.
SimpleTextFormat
akan bekerja dengan baik. Di sini terendah satuan waktu adalah detik, tetapi bagaimana cara saya mendapatkan milidetik juga?
Java salah satu kapal
public String getCurrentTimeStamp() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date());
}
di JDK8 gaya
public String getCurrentLocalDateTimeStamp() {
return LocalDateTime.now()
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
}
Anda hanya perlu menambahkan milidetik lapangan pada tanggal format string:
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
The API doc SimpleDateFormat menjelaskan format string dalam detail.
coba ini:-
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date date = new Date();
System.out.println(dateFormat.format(date));
atau
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
Instant.now()
.toString()
2016-05-06T23:24:25.694 Z
ZonedDateTime.now(
ZoneId.of( "America/Montreal" )
).format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19:24:25.694
Di Jawa 8 dan kemudian kami memiliki jawa.waktu kerangka dibangun ke Jawa 8 dan kemudian. Ini kelas baru menggantikan merepotkan tua jawa.util.Tanggal/.Kalender kelas-kelas. Kelas-kelas baru yang terinspirasi oleh yang sangat sukses Joda-Waktu kerangka kerja, yang dimaksudkan sebagai penggantinya, mirip dalam konsep tapi kembali mengarsiteki. Didefinisikan oleh JSR 310. Diperpanjang oleh ThreeTen-Extra proyek. Lihat Tutorial.
Diketahui bahwa jawa.waktu ini mampu nanodetik resolusi (9 desimal di sebagian kecil dari detik), terhadap milidetik resolusi (3 desimal) dari jawa.util.Tanggal & Joda-Waktu. Jadi, ketika format untuk menampilkan hanya 3 tempat desimal, anda bisa menyembunyikan data.
Jika anda ingin menghilangkan mikrodetik atau nanodetik dari data anda, truncate.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
Java.waktu kelas menggunakan ISO 8601 format secara default ketika parsing/menghasilkan string. A Z
pada akhir pendek untuk Zulu
, dan berarti UTC.
Sebuah Instan
merupakan saat pada waktu dalam UTC dengan resolusi hingga nano. Mengabadikan saat saat ini di Jawa 8 terbatas untuk milidetik, dengan implementasi baru di Jawa 9 menangkap hingga nanodetik tergantung pada perangkat keras komputer anda jam kemampuan.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23:24:25.694 Z
Mengganti T
di tengah dengan ruang, dan Z
dengan apa-apa, untuk mendapatkan output yang diinginkan.
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23:24:25.694
Seperti yang anda don't peduli termasuk offset atau zona waktu, membuat "lokal" tanggal-waktu yang tidak terkait untuk setiap wilayah tertentu.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
Sangat sukses Joda-Waktu perpustakaan adalah inspirasi untuk java.kerangka waktu. Dianjurkan untuk bermigrasi ke jawa.saat nyaman.
The ISO 8601 format termasuk milidetik, dan default untuk Joda-Waktu 2.4 perpustakaan.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
Ketika menjalankan...
Now: 2013-11-26T20:25:12.014Z
Juga, anda dapat meminta milidetik fraksi-of-a-kedua sebagai angka, jika diperlukan:
int millisOfSecond = myDateTime.getMillisOfSecond ();
Cara termudah adalah untuk (sebelum Java 8) menggunakan,
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Tapi SimpleDateFormat tidak thread-safe. Tidak jawa.util.Tanggal. Hal ini akan menyebabkan mengarah ke potensi concurrency masalah bagi pengguna. Dan ada banyak masalah dalam desain yang ada. Untuk mengatasi hal tersebut sekarang di Jawa 8 kami memiliki paket terpisah yang disebut jawa.waktu. Ini Java SE 8 Tanggal dan Waktu dokumen memiliki gambaran yang baik tentang hal itu.
Jadi di Jawa 8 sesuatu seperti di bawah ini akan melakukan trik (untuk format tanggal/waktu),
LocalDateTime.now()
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
Dan satu hal yang perlu diperhatikan adalah ini dikembangkan dengan bantuan dari pihak ketiga yang populer perpustakaan joda-waktu,
proyek telah dipimpin bersama oleh penulis Joda-Waktu (Stephen Colebourne) dan Oracle, di bawah JSR 310, dan akan muncul di new Java SE 8 paket java.waktu.
Tapi sekarang joda-waktu
menjadi usang dan meminta pengguna untuk bermigrasi ke new jawa.waktu
.
Perhatikan bahwa dari Java SE 8 dan seterusnya, pengguna diminta untuk bermigrasi ke jawa.waktu (JSR-310) - bagian inti dari JDK yang menggantikan proyek ini
Pokoknya setelah mengatakan bahwa,
Jika anda memiliki Kalender contoh yang dapat anda gunakan di bawah ini untuk mengubahnya menjadi baru jawa.waktu
,
Calendar calendar = Calendar.getInstance();
long longValue = calendar.getTimeInMillis();
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
String formattedString = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(date.toString()); // 2018-03-06T15:56:53.634
System.out.println(formattedString); // 2018-03-06 15:56:53.634
Jika anda memiliki Kencan objek,
Date date = new Date();
long longValue2 = date.getTime();
LocalDateTime dateTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue2), ZoneId.systemDefault());
String formattedString = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.toString()); // 2018-03-06T15:59:30.278
System.out.println(formattedString); // 2018-03-06 15:59:30.278
Jika anda hanya memiliki epoch milidetik,
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(epochLongValue), ZoneId.systemDefault());
Saya akan menggunakan sesuatu seperti ini:
String.format("%tF %<tT.%<tL", dateTime);
Variabel dateTime
bisa setiap tanggal dan/atau waktu nilai, lihat JavaDoc untuk Pembentuk
.
Untuk melengkapi jawaban diatas, berikut adalah kecil contoh kerja dari sebuah program yang mencetak waktu dan tanggal saat ini, termasuk milidetik.
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String argv[]){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println(strDate);
}
}
Saya don't melihat referensi untuk ini:
SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmssSSS");
format di atas juga berguna.
Ans:
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); ZonedDateTime start = Instan.now().atZone(ZoneId.systemDefault()); String startTimestamp = mulai.format(dateFormatter);
Doc di Java 8 nama itu fraksi-dari-kedua , sedangkan di Jawa 6 bernama milidetik. Hal ini membawa saya kebingungan