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

nos*_*nos 98 java formatting datetime

如何根据自己的喜好格式化java.sql时间戳?(到字符串,用于显示目的)

Chs*_*y76 157

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

String s = new SimpleDateFormat("MM/dd/yyyy").format(myTimestamp);
Run Code Online (Sandbox Code Playgroud)

或者还包括时间:

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

  • 只是一个小提醒,如果SimpleDateFormat对象是一个本地范围的对象(它只在一个方法中创建和使用),那么它是线程安全的,因为它将驻留的堆栈本质上是"线程安全的"(因为它属于单个线程). (17认同)
  • 要包含时间,您需要使用SimpleDateFormat("MM/dd/yyyy hh:mm")或类似的东西 (5认同)
  • 这可行,但要注意,因为SimpleDateFormat不是线程安全的. (3认同)

use*_*421 26

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

Timestamp timestamp = ...
String.format("%1$TD %1$TT", timestamp)
Run Code Online (Sandbox Code Playgroud)

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

第一个'T'代表:

't', 'T'    date/time   Prefix for date and time conversion characters.
Run Code Online (Sandbox Code Playgroud)

以及'T'后面的字符:

'T'     Time formatted for the 24-hour clock as "%tH:%tM:%tS".
'D'     Date formatted as "%tm/%td/%ty". 
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 9

对于这个特定的问题,标准的java.text.SimpleDateFormat工作建议,但有不幸的副作用,SimpleDateFormat 不是线程安全的,可能是特别讨厌的问题的根源,因为它会在多线程场景中破坏你的输出,你不会得到任何例外!

强烈建议看Joda这样的事情.为什么?对于Java来说,这是一个比当前库更丰富,更直观的时间/日期库(以及即将推出的新标准Java日期/时间库的基础,因此您将学习一个即将成为标准的库API).

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

Dre*_*awn 8

如果您正在使用MySQL并希望数据库本身执行转换,请使用以下命令:

DATE_FORMAT(日期,格式)

如果您更喜欢使用Java格式化,请使用:

java.text.SimpleDateFormat中

SimpleDateFormat dateFormat = new SimpleDateFormat("M/dd/yyyy");
dateFormat.format( new Date() );
Run Code Online (Sandbox Code Playgroud)