繁体   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