簡體   English   中英

如何從Java中的時間戳獲取日期

[英]How to get Date from TimeStamp in java

我正在嘗試讀取數據庫mysql中的時間戳並將其保存到java中的Date變量。

我想要這樣的格式:YYYY-MM-DD HH:MM:SS(24小時格式)

在我的數據庫中,我使用該格式的時間戳,但是每次嘗試獲取該時間戳時,我都會讀取2014;如果使用getDate()將其讀取為Date,則會得到“ ago 16,2014”。

我不確定你到底想要什么。 您是否要獲取java.sql.Timestamp實例,還是要使用上述模式將時間戳記作為字符串獲取?

也許有幫助:

ResultSet rs = ...
Timestamp t = rs.getTimestamp(...);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(t);
// get the timestamp from the DB
java.sql.Timestamp yourTimestamp = youNameItGetTimestamp();

// Create the corresponding Date object
java.util.Date date = new java.util.Date(yourTimestamp.getTime());

// show in a string
java.text.SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
java.lang.String printableDate = formatter.format(date);
System.out.println("here you have it: <" + printableDate + ">");

其他答案是正確的,但使用麻煩的舊舊日期時間類。 而是使用java.time類。

轉換次數

新的方法已添加到舊類中以促進轉換,例如java.sql.Timestamp::toInstant()

java.sql.Timestamp ts = myResultSet.getTimestamp( … ) ;
Instant instant = ts.toInstant();

Instant

Instant類表示UTC時間線上的時刻,分辨率為納秒 它的toString方法生成標准ISO 8601格式之一的String。

String output = instant.toString();

2011-12-03T10:15:30Z

您可以將T替換為SPACE,然后刪除Z以獲得格式。

output = output.replace( "T" , " ").replace( "Z" , "" ) ;

2011-12-03 10:15:30

ZonedDateTime

如果要通過特定時區的鏡頭看到相同的時刻,請生成ZonedDateTime

ZoneId zoneId = ZonedId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( zoneId );

定義一個自定義的DateTimeFormatter對象。 或使用DateTimeFormatter.ISO_LOCAL_DATE_TIME並將T替換為SPACE。

String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ).replace( "T" , " " );

2011-12-03 05:15:30

關於java.time

java.time框架內置於Java 8及更高版本中。 這些類取代了麻煩的舊日期時間類,例如java.util.Date.Calendarjava.text.SimpleDateFormat

現在處於維護模式Joda-Time項目建議遷移到java.time。

要了解更多信息,請參見Oracle教程 並在Stack Overflow中搜索許多示例和說明。

大部分的java.time功能后移植到Java 6和7 ThreeTen,反向移植 ,並進一步用於安卓ThreeTenABP (見如何使用...... )。

ThreeTen-Extra項目使用其他類擴展了java.time。 該項目為將來可能在java.time中添加內容提供了一個試驗場。 您可以在這里找到一些有用的類,比如IntervalYearWeekYearQuarter ,和更多

您是否嘗試過像這樣的事情:

java.sql.Date timeStamp =新的java.sql.Timestamp(object.getDate());

這個鏈接也可以幫助您:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

您的字段類型是什么? 是字符串/ varchar嗎? 如何使用SimpleDateFormat?

final Date myDate = new SimpleDateFormat(FORMAT_STRING).parse(value);

有關更多詳細信息,請參見SimpleDateFormat文檔。

順便說一句:小代碼和數據庫定義會很好...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM