Java日期以mmddhhmmss格式表示

3

我想在文件中添加日期以便维护存档。

我希望日期的格式为:mmddhhmmss。

所以文件名是"cGroup0307131614",只是我想要添加时间戳。

时间戳的格式不一定是mmddhhmmss,但需要保留时间戳。

我尝试了以下方法:

java.util.Date date= new java.util.Date();
     System.out.println(new Timestamp(date.getTime()));

但输出结果为2013-03-07 14:59:30.252。我不想要任何空格、冒号或特殊字符。


5
不要使用Timestamp,改用SimpleDateFormat - Matt Ball
2个回答

6
SimpleDateFormat simpleDateFormat =
            new SimpleDateFormat("MMddhhmmss");
String dateAsString = simpleDateFormat.format(new Date());
System.out.println(dateAsString);

输出:

0307114712

时区为中欧时间(CET),以防您得到不同的结果。 - user000001

1

tl;dr

ZonedDateTime
    .now( ZoneId.of( "America/Montreal" ) )
    .format( DateTimeFormatter.ofPattern( "MMddHHmmss" ) )

java.time

现代方法是使用java.time类,它取代了旧的遗留日期时间类。

Instant

使用Instant类获取当前UTC时刻。Instant类表示时间线上的一个时刻,以UTC为基准,精度高达纳秒(小数点后可有九位数字)。

Instant instant = Instant.now();  // UTC

也许最好坚持使用 UTC。如果是这样,请将其转换为更灵活的 OffsetDateTime 进行格式化。指定 ZoneOffset.UTC 常量。

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );

DateTimeFormatter

定义一个DateTimeFormatter以满足您的格式要求。我不建议省略年份,但如果您坚持这样做,那么我们就开始吧。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMddHHmmss" );

使用该格式化程序创建一个字符串。
String output = odt.format( f );

ZonedDateTime

应用时区,从特定地区的挂钟时间角度查看同一时刻。

大陆/地区的格式指定正确的时区名称。永远不要使用3-4个字母的缩写,例如ESTIST,因为它们不是真正的时区,没有标准化,甚至不唯一(!)。

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

使用DateTimeFormatter生成字符串,如上所示。

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date.Calendarjava.text.SimpleDateFormat

Joda-Time项目现在处于维护模式,建议迁移到java.time。

要了解更多信息,请查看Oracle教程。在Stack Overflow上搜索许多示例和解释。规范是JSR 310

如何获取java.time类?

ThreeTen-Extra项目通过添加额外的类来扩展java.time。该项目是java.time可能未来新增内容的试验场。在这里,您可以找到一些有用的类,例如Interval, YearWeek, YearQuarter以及更多

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接