Bagaimana cara mendapatkan tanggal dan waktu saat ini di Jawa?
Saya mencari sesuatu yang setara dengan DateTime.Nowdari C #.
Bagaimana cara mendapatkan tanggal dan waktu saat ini di Jawa?
Saya mencari sesuatu yang setara dengan DateTime.Nowdari C #.
Jawaban:
Hanya membangun Dateobjek baru tanpa argumen; ini akan menetapkan tanggal dan waktu saat ini ke objek baru.
import java.util.Date;
Date d = new Date();
Dalam kata-kata Javadocs untuk konstruktor argumen-nol :
Mengalokasikan objek Tanggal dan menginisialisasi sehingga mewakili waktu di mana dialokasikan , diukur ke milidetik terdekat.
Pastikan Anda menggunakan java.util.Datedan tidak java.sql.Date- yang terakhir tidak memiliki konstruktor zero-arg, dan memiliki semantik yang sedikit berbeda yang merupakan topik percakapan yang sama sekali berbeda. :)
Kelas Tanggal dan Kalender Java dianggap oleh banyak orang sebagai dirancang dengan buruk. Anda harus melihat Joda Time , perpustakaan yang biasa digunakan sebagai pengganti perpustakaan tanggal bawaan Java.
Setara dengan DateTime.Nowdi Joda Time adalah:
DateTime dt = new DateTime();
Memperbarui
Seperti disebutkan dalam komentar, versi terbaru Joda Time memiliki DateTime.now()metode, jadi:
DateTime dt = DateTime.now();
Instant.now()
Kelas java.util.Date telah ketinggalan zaman dengan paket java.time baru ( Tutorial ) di Java 8 dan yang lebih baru. Kelas-kelas java.util.Date/.Calendar tua terkenal merepotkan, membingungkan, dan cacat. Hindari mereka.
ZonedDateTimeDapatkan momen saat ini di java.time.
ZonedDateTime now = ZonedDateTime.now();
A ZonedDateTimemerangkum:
Jika tidak ada zona waktu yang ditentukan, zona waktu default JVM Anda saat ini ditetapkan secara diam-diam. Lebih baik untuk menentukan zona waktu yang Anda inginkan / harapkan daripada bergantung secara implisit pada default.
ZoneId z = ZoneId.of( "Pacific/Auckland" );
ZonedDateTime zdt = ZonedDateTime.now( z );
Secara umum lebih baik untuk membiasakan melakukan pekerjaan back-end Anda (logika bisnis, database, penyimpanan, pertukaran data) semua dalam zona waktu UTC . Kode di atas bergantung secara implisit pada zona waktu default JVM saat ini.
The Instantkelas merupakan saat di timeline di UTC dengan resolusi nanodetik.
Instant instant = Instant.now();
The Instantkelas kelas bangunan-blok dasar di java.time dan dapat sering digunakan dalam kode Anda.
Saat Anda membutuhkan lebih banyak fleksibilitas dalam memformat, ubah menjadi OffsetDateTime. Tentukan ZoneOffsetobjek. Untuk UTC gunakan konstanta praktis untuk UTC .
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
Anda mudah menyesuaikan dengan zona waktu lain untuk presentasi kepada pengguna. Gunakan nama zona waktu yang tepat , jangan pernah kode 3-4 huruf seperti ESTatau IST.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime nowMontreal = instant.atZone( z );
Hasilkan representasi String dari nilai tanggal-waktu itu, dilokalkan.
String output = DateTimeFormatter
.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH )
.format ( nowMontreal );
InstantAtau, untuk tetap di UTC, gunakan Instant. Sebuah Instantobjek mewakili momen di timeline, hingga resolusi nanosecond, selalu dalam UTC. Ini menyediakan blok bangunan untuk waktu-waktu yang dikategorikan, bersama dengan penugasan zona waktu. Anda dapat memikirkannya secara konseptual dengan cara ini:
Anda dapat mengekstrak Instantdari ZonedDateTime.
Instant instantNow = zdt.toInstant();
Anda bisa mulai dengan Instan. Tidak perlu menentukan zona waktu di sini, seperti Instantbiasa di UTC.
Instant now = Instant.now();
Saya lebih suka menggunakan objek Kalender.
Calendar now = GregorianCalendar.getInstance()
Saya merasa jauh lebih mudah untuk dikerjakan. Anda juga bisa mendapatkan objek Tanggal dari Kalender.
http://java.sun.com/javase/6/docs/api/java/util/GregorianCalendar.html
Calendar.getInstance()
Di Java 8 itu:
ZonedDateTime dateTime = ZonedDateTime.now();
java.lang.System.currentTimeMillis(); akan mengembalikan datetime sejak zaman
Jika Anda membuat objek Date baru, secara default akan diatur ke waktu saat ini:
import java.util.Date;
Date now = new Date();
Java selalu mendapat dukungan yang tidak memadai untuk kasus penggunaan tanggal dan waktu. Misalnya, kelas-kelas yang ada (seperti java.util.Datedan SimpleDateFormatter) tidak aman-thread yang dapat menyebabkan masalah konkurensi. Juga ada beberapa kekurangan di API. Misalnya, tahun java.util.Datemulai dari tahun 1900, bulan mulai dari 1, dan hari mulai dari 0 — tidak terlalu intuitif. Masalah-masalah ini menyebabkan popularitas perpustakaan tanggal dan waktu pihak ketiga, seperti Joda-Time. Untuk mengatasi tanggal dan waktu yang baru, API dirancang untuk Java SE 8.
LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);
Sesuai dok :
Metode
now()mengembalikan tanggal saat ini menggunakan jam sistem dan zona waktu default, bukan nol . Itu memperoleh tanggal-waktu saat ini dari jam sistem di zona waktu default. Ini akan meminta jam sistem di zona waktu default untuk mendapatkan tanggal-waktu saat ini. Menggunakan metode ini akan mencegah kemampuan untuk menggunakan jam alternatif untuk pengujian karena jam tersebut dikodekan dengan keras.