提问者:小点点

SimpleDateFormat中打印日期的格式应该是什么-01-JUN-2008.55.27.577984000 AMUTC?[重复]


我想以这种格式打印当前日期-01-JUN-2008.55.27.577984000 AMUTC。尝试了SimpleDateformat中的许多格式,但没有一种有效。像这样打印的正确方法是什么?


共1个答案

匿名用户

SimpleDateFormat

您可以使用以下模式:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class TimeFormatting {
    public static void main(String[] args) {
        SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yy hh.mm.ss.SSS a Z");
        formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
        String formatted = formatter.format(new Date(2015, 4, 4, 13, 7, 19)); //One example date
        System.out.println(formatted);
    }
}

这将给出输出04-05-1511.07.19.000AM 0000其中0000等于UTC

模式的解释dd-MM-yyhh.mm.ss.SSSZ

  • dd=当天
  • MM=月份
  • yy=年份
  • hh=小时
  • mm=分钟
  • ss=第二个
  • SSS=毫秒。SimpleDateFormat中不存在对纳秒的引用(请参阅此答案)。
  • a=显示AM/PM
  • Z=显示时区

补充资料

请注意:SimpleDateFormat已弃用。您应该使用DateTimeFor物质。一大优势是您还可以拥有纳秒(n)。

一个例子:

import java.time.LocalDateTime; 
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;  
import java.time.ZoneOffset;

public class TimeFormatting {    
  public static void main(String[] args) {    
   ZonedDateTime time = ZonedDateTime.now(ZoneOffset.UTC);

   DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yy hh.mm.ss.n a 'UTC'").withZone(ZoneOffset.UTC);
   String timeDate = time.format(formatter);
   System.out.println(timeDate);  
  }    
}   

编辑:

如果你想让UTC而不是0000使用SimpleDateFormat,你可以使用dd-MM-yyhh.mm.ss。SSS一个zzz代替。