如何在Java中获取string格式的当前时间戳? “yyyy.MM.dd.HH.mm.ss”

如何获得在Java中的string格式的时间戳? “yyyy.MM.dd.HH.mm.ss”

String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp()); 

这是我有,但时间戳()需要一个参数…

更换

 new Timestamp(); 

 new java.util.Date() 

因为Timestamp没有默认的构造函数,或者你可以用下面的方法来实现:

 new Timestamp(System.currentTimeMillis()); 

使用java.util.Date类而不是Timestamp。

 String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()); 

这将以指定的格式获取当前date。

您可以使用java.util.Date而不是Timestamp:

 String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date()); 

只使用java.sql进行数据库传输

java.sqltypes(如java.sql.Timestamp )只能用于java.sql.Timestamp和传出数据库。 立即在Java 8及更高版本中转换为java.timetypes。

java.time.Instant

java.sql.Timestamp映射到java.time.Instant ,UTC中时间轴上的一个时刻。

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

时区

应用所需的/预期的时区来获得ZonedDateTime

 ZoneId zoneId = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId ); 

格式化的string

使用DateTimeFormatter生成您的string。 模式代码与java.text.SimpleDateFormat类似,但不完全相同,所以仔细阅读文档。

 DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" ); String output = zdt.format( formatter ); 

这种特殊的格式在确切含义上是模棱两可的,因为它没有任何偏移UTC或时区的指示。

ISO 8601

如果您对此事有任何意见,我build议您考虑使用标准的ISO 8601格式,而不是自己动手。 标准格式与您的非常相似。 例如:
2016-02-20T03:26:32+05:30

java.time类默认使用这些标准格式,所以不需要指定模式。 ZonedDateTime类通过附加时区名称(明智的改进)来扩展标准格式。

 String output = zdt.toString(); // Example: 2007-12-03T10:15:30+01:00[Europe/Paris] 

转换为java.sql

您可以从java.time转换回java.sql.Timestamp 。 从ZonedDateTime提取Instant

新的方法已被添加到旧的类,以方便转换到/从java.time类。

 java.sql.Timestamp ts = java.sql.Timestamp.from( zdt.toInstant() ); 

更合适的方法是在构造函数中指定一个Locale区域作为参数。 下面的例子使用US Locale区域。 date格式是区域设置敏感的,并使用Locale来定制相关用户区域习俗和惯例的信息Locale(Java Platform SE 7)

 String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());