[英]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 8及更高版本中。 這些類取代了麻煩的舊日期時間類,例如java.util.Date
, .Calendar
和java.text.SimpleDateFormat
。
現在處於維護模式的Joda-Time項目建議遷移到java.time。
要了解更多信息,請參見Oracle教程 。 並在Stack Overflow中搜索許多示例和說明。
大部分的java.time功能后移植到Java 6和7 ThreeTen,反向移植 ,並進一步用於安卓在ThreeTenABP (見如何使用...... )。
ThreeTen-Extra項目使用其他類擴展了java.time。 該項目為將來可能在java.time中添加內容提供了一個試驗場。 您可以在這里找到一些有用的類,比如Interval
, YearWeek
, YearQuarter
,和更多 。
您是否嘗試過像這樣的事情:
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.