use*_*884 152 java datetime timestamp date
如何在Java中以字符串格式获取时间戳?"yyyy.MM.dd.HH.mm.ss"
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,但Timestamp()需要一个参数......
Jig*_*shi 189
更换
new Timestamp();
Run Code Online (Sandbox Code Playgroud)
同
new java.util.Date()
Run Code Online (Sandbox Code Playgroud)
因为没有默认构造函数Timestamp
,或者您可以使用以下方法执行此操作:
new Timestamp(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
dim*_*niy 143
使用java.util.Date
class而不是Timestamp.
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
Run Code Online (Sandbox Code Playgroud)
这将以指定的格式为您提供当前日期.
Kak*_*rot 30
您可以使用java.util.Date而不是Timestamp:
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
Run Code Online (Sandbox Code Playgroud)
Bas*_*que 28
仅使用现代java.time类.切勿使用可怕的遗产类,如SimpleDateFormat
,Date
或java.sql.Timestamp
.
ZonedDateTime // Represent a moment as perceived in the wall-clock time used by the people of a particular region ( a time zone).
.now( // Capture the current moment.
ZoneId.of( "Africa/Tunis" ) // Specify the time zone using proper Continent/Region name. Never use 3-4 character pseudo-zones such as PDT, EST, IST.
) // Returns a `ZonedDateTime` object.
.format( // Generate a `String` object containing text representing the value of our date-time object.
DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" )
) // Returns a `String`.
Run Code Online (Sandbox Code Playgroud)
现代方法使用java.time类,如上所示.
如果JDBC驱动程序符合JDBC 4.2,则可以直接与数据库交换java.time对象.使用PreparedStatement::setObject
和ResultSet::getObject
.
如果您的JDBC驱动程序尚未遵守JDBC 4.2以支持java.time类型,则必须回退到使用java.sql类.
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ; // Capture the current moment in UTC.
myPreparedStatement.setObject( … , odt ) ;
Run Code Online (Sandbox Code Playgroud)
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
Run Code Online (Sandbox Code Playgroud)
java.sql类型(例如java.sql.Timestamp
)应仅用于传入和传出数据库.立即在Java 8及更高版本中转换为java.time类型.
java.time.Instant
一个java.sql.Timestamp
映射到java.time.Instant
,在UTC时间线上的时刻.
java.sql.Timestamp ts = myResultSet.getTimestamp( … );
Instant instant = ts.toInstant();
Run Code Online (Sandbox Code Playgroud)
应用所需/预期的时区来获得ZonedDateTime
.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Run Code Online (Sandbox Code Playgroud)
使用a DateTimeFormatter
生成字符串.模式代码类似于java.text.SimpleDateFormat
但不完全相同,因此请仔细阅读文档.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" );
String output = zdt.format( formatter );
Run Code Online (Sandbox Code Playgroud)
这种特殊格式的确切含义含糊不清,因为它没有任何偏离UTC或时区的指示.
如果您对此事有任何发言权,我建议您考虑使用标准的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]
Run Code Online (Sandbox Code Playgroud)
您可以从java.time转换回java.sql.Timestamp
.Instant
从中提取一个ZonedDateTime
.
旧类中添加了新方法,以便于转换为java.time类或从java.time类转换.
java.sql.Timestamp ts = java.sql.Timestamp.from( zdt.toInstant() );
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本.这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
.
现在处于维护模式的Joda-Time项目建议迁移到java.time类.
要了解更多信息,请参阅Oracle教程.并搜索Stack Overflow以获取许多示例和解释.规范是JSR 310.
您可以直接与数据库交换java.time对象.使用符合JDBC 4.2或更高版本的JDBC驱动程序.不需要字符串,不需要课程.java.sql.*
从哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time.该项目是未来可能添加到java.time的试验场.您可以在此比如找到一些有用的类Interval
,YearWeek
,YearQuarter
,和更多.
gzc*_*gzc 13
java.time
如果您使用 java 8 或更新版本,请使用现代类。
String s = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
Run Code Online (Sandbox Code Playgroud)
Basil Bourque的回答非常好。但是时间太长了。许多人没有耐心阅读它。前 3 个答案太旧了,可能会误导 Java new bee。所以我为新来的开发人员提供了这个简短而现代的答案。希望这个答案可以减少可怕的SimpleDateFormat
.
Pho*_*nix 10
您可以使用以下内容:
new java.sql.Timestamp(System.currentTimeMillis()).getTime()
Run Code Online (Sandbox Code Playgroud)
结果:
1539594988651
Run Code Online (Sandbox Code Playgroud)
更合适的方法是将Locale区域指定为构造函数中的参数.以下示例使用美国区域设置区域.日期格式设置是区域设置敏感的,并使用Locale来定制与用户区域Locale(Java Platform SE 7)的习惯和惯例相关的信息.
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
470509 次 |
最近记录: |