回答
僅僅構造一個沒有任何參數的新對象Date
;這會將當前日期和時間分配給新對象。
import java.util.Date;
Date d = new Date();
在the Javadocs詞語爲the zero-argument constructor:
分配Date對象和,它表示測量至最近的毫秒在它被分配的時候,對其進行初始化。
確保您使用java.util.Date
而不是java.sql.Date
- 後者不具有零參數的構造函數,並具有略微不同的語義是一個完全不同的談話主題。 :)
另請注意,GregorianCalendar和許多類似的對象的工作方式相同。因此,無論您使用哪種類型的日期/日曆對象,零參數構造函數通常會將對象初始化爲當前日期/時間。 – 2010-01-06 01:02:19
從日期文檔:從JDK 1.1開始,應該使用Calendar類在日期和時間字段之間進行轉換,並且應該使用DateFormat類來格式化和分析日期字符串。 – 2013-08-07 14:06:57
請考慮新的Java8 API - [LocalDateTime.now()和ZonedDateTime.now()](http://stackoverflow.com/a/26225884/513342) – 2014-12-09 06:36:24
如果您創建一個新的Date對象,默認情況下它會被設置爲當前時間。
Calendar now = GregorianCalendar.getInstance()
我覺得使用起來要容易得多。您還可以從日曆中獲取Date對象。
http://java.sun.com/javase/6/docs/api/java/util/GregorianCalendar.html
Java的Date和Calendar類被認爲是被許多設計不佳。您應該看看Joda Time,這是一個通常用來代替Java內置日期庫的庫。
的DateTime.Now
在約達時間相對應的是:
DateTime dt = new DateTime();
更新
正如在評論中指出,約達時間的最新版本有DateTime.now()
方法,所以:
DateTime dt = DateTime.now();
Joda的當前(2.1)版本似乎有一個靜態的DateTime.now方法()(可選接受DateTimeZone或Chronology)。 http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#now%28%29 – 2012-09-24 12:52:03
請注意,此答案已於2010年發佈.Java 8吸收了Joda Time的許多最佳功能。有關更多信息,請參見[官方文檔](https://docs.oracle.com/javase/tutorial/datetime/index.html)和許多其他在線文章。 – DavidS 2016-02-02 20:46:13
java.lang.System.currentTimeMillis();
將返回自時代以來的日期時間
適用於日誌記錄,但需要解析和轉換才能顯示給用戶 – 2014-07-24 08:40:39
import org.joda.time.DateTime;
DateTime now = DateTime.now();
在Java 8是:
ZonedDateTime dateTime = ZonedDateTime.now();
TL;博士
Instant.now()
的Java。time
在Java 8及更高版本中,java.util.Date類已被新的java.time package(Tutorial)過時。古老的java.util.Date/.Calendar類非常麻煩,令人困惑,並且存在缺陷。避免它們。
ZonedDateTime
獲取java.time當前時刻。
ZonedDateTime now = ZonedDateTime.now();
一個ZonedDateTime
封裝:
- 日期。
- 時間,幾分之一秒到nanosecond分辨率。
- 時區。
如果沒有指定時區,則您的JVM的當前默認時區將被靜默分配。更好地指定您想要的/預期的時區,而不是隱式地依賴默認值。
ZoneId z = ZoneId.of("Pacific/Auckland");
ZonedDateTime zdt = ZonedDateTime.now(z);
UTC
一般都比較好做後端的工作(業務邏輯,數據庫,存儲,數據交換)所有UTC時區的習慣來獲得。上面的代碼隱含地依賴於JVM當前的默認時區。
Instant
類表示UTC時間軸中的一個時刻,分辨率爲納秒。
Instant instant = Instant.now();
的Instant
類是java.time一個基本構建塊級和可在代碼中經常使用。
當您需要更多的格式化靈活性時,轉換爲OffsetDateTime
。指定一個ZoneOffset
對象。對於UTC使用便利的constant for UTC。
OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC);
時區
您可以輕鬆地調整到另一個時區呈現給用戶。使用proper time zone name,從不 3-4字母代碼,如EST
或IST
。
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime nowMontreal = instant.atZone(z);
生成該日期時間值的字符串表示,本地化。
String output = DateTimeFormatter
.ofLocalizedDate(FormatStyle.FULL)
.withLocale(Locale.CANADA_FRENCH)
.format (nowMontreal);
Instant
或者留在UTC,使用Instant
。 Instant
對象表示時間軸上的一個時刻,以毫微秒分辨率表示,始終以UTC表示。這提供了分區日期時間的構建塊以及時區分配。你可以認爲它在概念上是這樣的:
您可以提取從ZonedDateTime
一個Instant
。
Instant instantNow = zdt.toInstant();
您可以從Instant開始。無需在此指定時區,因爲Instant
始終採用UTC。
Instant now = Instant.now();
我還發布了[另一個答案](http://stackoverflow.com/a/39379431/642706),其中提供了有關重複問題的更多詳細信息。 – 2016-09-07 21:45:16
Java對日期和時間用例的支持始終不足。例如,現有類(如java.util.Date
和SimpleDateFormatter
)不是線程安全的,可能會導致併發問題。 API也存在一些缺陷。例如,java.util.Date
中的年份從1900開始,月份從1開始,並且天從0開始 - 不太直觀。這些問題導致第三方日期和時間庫的流行,如Joda-Time
。爲了應對新的日期和時間API旨在對Java SE 8
LocalDateTime timePoint = LocalDateTime.now();
System.out.println(timePoint);
按doc:
使用系統 時鐘和默認時間
now()
返回當前的日期,時間的方法-zone,非空。它從默認時區的系統時鐘獲取當前日期時間 。這將在默認時區 查詢系統時鐘以獲取當前的日期時間 。由於時鐘是硬編碼的,因此使用此方法將會妨礙使用另一個時鐘進行測試的功能。
- 1. C#相當於在Java
- 2. C#出的IntPtr相當於在Java中
- 3. C#的BigInteger相當於在Java中
- 4. 相當於JMX的C++嗎?
- 5. 相當於Silverlight/Java Applet嗎?
- 6. 相當於Java的C#Rfc2898DerivedBytes
- 7. 相當於C++的Java ByteBuffer?
- 8. C#相當於Java的Exception.printStackTrace()?
- 9. C++相當於Java的paintcomponent?
- 10. Java相當於C的「ispunct()」
- 11. 相當於Java的C#Action.BeginInvoke
- 12. C#相當於Java的mkdirs()
- 13. C#相當於java的Graphics2D
- 14. 相當於Java的C++
- 15. C++相當於Java的System.arraycopy
- 16. C#相當於Java的Runtime.getRuntime.exec()
- 17. java的cin(C++)相當於
- 18. 相當於Java C#的typeof()
- 19. C#相當於Java的Thread.setDaemon?
- 20. 相當於Java的Optional.orElse C#
- 21. 相當於Java中C語言的__FUNCTION__
- 22. Java中的C stroull相當於
- 23. 相當於C++中的Java接口?
- 24. Java相當於CultureInfo.InvariantCulture C#中的屬性
- 25. C#中的Java noneMatch()相當於Linq
- 26. Java的setFilterBitmap相當於在Objective-C
- 27. Java相當於C#DESCrypto
- 28. Java相當於C#system.beep?
- 29. Java相當於C#代碼
- 30. C#相當於java Matcher.hitEnd()
此問題早於[此問題](http://stackoverflow.com/q/5175728/642706)以前被標記爲重複。所以我改變了名稱,重新開放了這個問題,並將新問題標記爲重複。 – 2016-09-07 21:46:35
「複製」中的標題更清晰,並且可以通過Google搜索更容易找到 – ragerdl 2017-03-19 18:27:42