如何格式化java.sql时间戳以进行显示?


Answers:


160

java.sql.Timestamp延伸java.util.Date。你可以做:

String s = new SimpleDateFormat("MM/dd/yyyy").format(myTimestamp);

或还包括时间:

String s = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(myTimestamp);

3
可以,但是要注意,因为SimpleDateFormat不是线程安全的。
布赖恩·阿格纽

17
提醒一下,如果SimpleDateFormat对象是本地范围的对象(仅在方法内部创建和使用),则它是线程安全的,因为它将驻留在其上的堆栈本质上是“线程安全的”(因为它属于一个线程)。
量子

5
要包括时间,您将需要使用SimpleDateFormat(“ MM / dd / yyyy hh:mm”)或类似的方法
AverageMarcus 2012年

1
为了使需要它的人更完整,字符串S = new SimpleDateFormat(“ MM / dd / yyyy HH:mm:ss”)。format(myTimestamp);
Ishan Liyanage

27

使用String.format(或java.util.Formatter):

Timestamp timestamp = ...
String.format("%1$TD %1$TT", timestamp)

编辑:
请参阅Formatter的文档以了解TD和TT的含义:单击java.util.Formatter

第一个“ T”代表:

't', 'T'    date/time   Prefix for date and time conversion characters.

以及“ T”后面的字符:

'T'     Time formatted for the 24-hour clock as "%tH:%tM:%tS".
'D'     Date formatted as "%tm/%td/%ty". 

1
据我说,这是最好的答案。不会创建仅用于将时间戳转换为字符串的多余对象。
Salil

1
现在应该清楚可以在哪里找到文档及其含义
2013年

十分优雅。为了清楚起见,此处示例产生的格式如下所示05/30/17 00:39:18
本体

@ Noumenon谢谢,这是“按我的喜好”的格式,因为问题要求[:-)
user85421 '17

10

对于这个特定问题,它是标准的建议java.text.SimpleDateFormat,但是具有不幸的副作用,即SimpleDateFormat 它不是线程安全的,并且可能是特别令人讨厌的问题的根源,因为它会破坏多线程方案中的输出,并且您不会得到任何例外!

强烈建议您在Joda寻找类似的内容。为什么呢 与当前库相比,它是一个比Java库更丰富,更直观的Java时间/日期库(并且是新出现的新标准Java日期/时间库的基础,因此您将学习即将成为标准的库API)。


8
好警告。但是很容易解决-不要通过将它们存储在会话范围/实例变量/静态上下文中,然后从多个线程访问它们来共享SimpleDateFormat实例。只需在您的方法中创建一个新的SimpleDateFormat()并在使用后将其丢弃。那是线程安全的。
Glen Best

当然,如果您确实要存储/共享SimpleDateFormat实例,请同步访问:synced(simpleDateFormatInstance){s = simpleDateFormatInstance.format(myTimeStamp)}或创建SDF类的自定义扩展,并在format方法中自动执行此操作。
Glen Best



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.