2013-03-07 114 views
3

我想为文件添加日期,因此我维护归档。 我想要这种格式的日期:mmddhhmmssmmddhhmmss格式的java日期

所以文件名是“cGroup0307131614”,只是我想添加时间戳。 没有必要它应该是mmddhhmmss格式,但保持时间戳的格式。

我试图FOLL:

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

但O/P是2013年3月7日14:59:30.252。我不想要任何空格冒号或特殊字符。

+5

请勿使用'Timestamp'。请使用['SimpleDateFormat'](http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)。 – 2013-03-07 22:44:04

回答

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

输出:

0307114712 
+0

如果你得到不同的结果,时区是CET – user000001 2013-03-07 22:49:03

1

TL;博士

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

java.time

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

Instant

抓住当前时刻与Instant类UTC。 Instant类表示UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数点后最多九(9)位数字)。

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

应用时区通过特定区域的wall-clock time的镜头,看看同一时刻。

continent/region的格式指定proper time zone name。切勿使用3-4字母缩写,如ESTIST,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。如上所示,使用DateTimeFormatter来生成字符串。

关于java。时间

java.time框架内置于Java 8及更高版本。这些类代替了日期 - 时间类legacy,如java.util.Date.Calendar,& java.text.SimpleDateFormat

Joda-Time项目现在位于maintenance mode,建议迁移到java.time。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310

从何处获取java.time类?

ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval,YearWeek,YearQuartermore