如何在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());