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

时间:2009-07-20 23:14:55

标签: java datetime formatting

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

7 个答案:

答案 0 :(得分:155)

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);

答案 1 :(得分:24)

使用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". 

答案 2 :(得分:9)

针对此特定问题,java.text.SimpleDateFormat的标准建议有效,但却产生了SimpleDateFormat is not thread-safe 的不幸副作用,并且可能是令人讨厌的问题,因为它会在多线程场景中破坏你的输出,你不会得到任何例外!

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

答案 3 :(得分:8)

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

DATE_FORMAT(date,format)

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

java.text.SimpleDateFormat

SimpleDateFormat dateFormat = new SimpleDateFormat("M/dd/yyyy");
dateFormat.format( new Date() );

答案 4 :(得分:2)

使用DateFormat。在国际化应用程序中,使用getInstance提供的格式。如果您想明确控制格式,请自己创建一个新的SimpleDateFormat

答案 5 :(得分:0)

java.time

我正在提供现代答案。 MyChart类是在已经设计不良的Your code raises an exception. The following is the traceback of the failure: File "<ipython-input-5-25a0c5c7dd52>", line 32, in classifier if ys[i,:] * np.dot(w.T, xs[i,:]) <= 0: def classifier(xs,ys): xs : n input vectors of d dimensions (nxd) ys : n labels (-1 or +1) m = 0 while m < 100: m = 0 for i in xs: if ys[i] * np.dot(w.T, xs[i]) <= 0: # <--- error # do stuff m = m + 1 if m == 0: break 类之上的一个hack,并且已经过时了。不过,我假设您是从旧版API获取Timestamp的,而您现在无法负担升级到java.time的费用。完成此操作后,请将其转换为现代的java.util.Date,然后从那里进行进一步处理。

Timestamp

我所在时区的输出:

07.09.2019 23:02:03

通过指定Instant DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) .withLocale(Locale.GERMAN); Timestamp oldfashionedTimestamp = new Timestamp(1_567_890_123_456L); ZonedDateTime dateTime = oldfashionedTimestamp.toInstant() .atZone(ZoneId.systemDefault()); String desiredFormat = dateTime.format(formatter); System.out.println(desiredFormat); FormatStyle.SHORT.MEDIUM选择所需格式的长度。选择您自己放置.LONG的语言环境。并选择所需的时区,例如.FULLLocale.GERMAN是没有时区的时间点,因此我们需要一个时区才能将其转换为年,月,日,小时,分钟等。如果您的ZoneId.of("Europe/Oslo")来自类型Timestamp的数据库值没有时区(通常不建议使用,但不幸的是经常看到),Timestamp可能会为您提供正确的结果。在这种情况下,另一个更简单的选择是使用timestamp转换为ZoneId.systemDefault(),然后以与LocalDateTime相同的方式格式化oldfashionedTimestamp.toLocalDateTime()。 / p>

答案 6 :(得分:-8)

String timeFrSSHStr = timeFrSSH.toString();