我有一个时间戳打印日期和时间(24小时格式(
String timeStamp = new SimpleDateFormat("ddMMMyyyyHHmm").format(Calendar.getInstance().getTime());
当我打印时间戳时,输出为
27Feb20180051
但是我想要这样的东西
27Feb20180051EST
任何想法如何进行?
尝试以下代码,
SimpleDateFormat dateFormatter = new SimpleDateFormat("ddMMMyyyyHHmmz");
String timeStamp = dateFormatter.format(Calendar.getInstance().getTime());
您可以根据需要使用模式格式化日期。以下链接中包含更多信息。https://docs.oracle.com/javase/7/docs/api/java/java/text/simpledateformat.html
尝试以下代码
String timeStamp = new SimpleDateFormat("ddMMMyyyyHHmmz").format(Calendar.getInstance().getTime());
String timeStamp = ZonedDateTime.now(ZoneId.of("America/Panama"))
.format(DateTimeFormatter.ofPattern("ddMMMuuuuHHmmzzz", Locale.ENGLISH));
System.out.println(timeStamp);
这个刚刚打印
27Feb20180408Est
消息:
- 指定显式时区。如果不是美国/巴拿马,请替换您所需的时区。您可以指定
ZoneId.systemDefault()
使用JVM的时区设置,只有请注意,程序的其他部分或在同一JVM中运行的其他程序可能会更改。 - 指定明确的语言环境。我以英语为" 2月",并建议使用
Locale.ENGLISH
,您的偏好可能会有所不同。同样,不同地区的时区缩写可能不同。 - 使用Java.Time,现代Java日期和时间API。
Calendar
,Date
和SimpleDateFormat
长期过时,尤其是臭名昭著的麻烦,因此我建议您避免使用它们。现代API可以使用得更好。 - 如果可以的话,请避免三个字母时区缩写。尽管Est May(!(不被理解为北美东部标准时间(UTC-5(以外的其他东西,但许多(可能大多数缩写(都是模棱两可的,因此很容易被误解在另一端。推荐格式是ISO 8601,例如
2018-02-27T04:08-05:00
。这是明确的,由于它是标准的,它将被广泛理解。您可以在Java中轻松生成它:OffsetDateTime.now(ZoneId.of("America/Panama")).toString()
。
链接: Oracle教程:日期时间说明如何使用java.time
。