如何在YYYY-MM-DD中获取当前时间HH:MI:Java中的秒级格式?
下面的代码给了我当前的时间。 但它并没有告诉任何有关毫秒的事情。
public static String getCurrentTimeStamp() { SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy Date now = new Date(); String strDate = sdfDate.format(now); return strDate; }
我以格式2009-09-22 16:47:08
(YYYY-MM-DD HH:MI:Sec)获得date。
但我想以2009-09-22 16:47:08.128
((YYYY-MM-DD HH:MI:Sec.Ms))格式检索当前时间。
128表示毫秒。
SimpleTextFormat将正常工作。 这里最低的时间单位是秒,但是我怎样才能得到毫秒呢?
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Java一个class轮
public String getCurrentTimeStamp() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()); }
在JDK8风格
public String getCurrentLocalDateTimeStamp() { return LocalDateTime.now() .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")); }
您只需要在date格式string中添加毫秒字段:
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
SimpleDateFormat的API文档详细描述了格式string。
尝试这个:-
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS"); Date date = new Date(); System.out.println(dateFormat.format(date));
要么
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime()));
TL;博士
Instant.now() .toString()
2016-05-06T23:24:25.694Z
ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ).format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) .replace( "T" , " " )
2016-05-06 19:24:25.694
java.time
在Java 8及更高版本中,我们有Java 8及更高版本中内置的java.time框架。 这些新的类取代了麻烦的旧的java.util.Date/.Calendar类。 新课程的灵感来自非常成功的Joda-Time框架,其目标是作为其后继者,在概念上相似但重新devise。 由JSR 310定义。 由ThreeTen-Extra项目扩展。 参见教程 。
请注意,java.time能够以毫微秒的分辨率(小数点后9位小数)与java.util.Date&Joda-Time的毫秒分辨率(小数点后三位)。 所以当格式化显示只有3位小数,你可以隐藏数据。
如果要从数据中消除任何微秒或纳秒,请截断。
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
parsing/生成string时,java.time类默认使用ISO 8601格式。 Z
最后是Zulu
缩写,意思是UTC 。
Instant
表示UTC时间轴上的一个时刻,分辨率高达纳秒 。 在Java 8中捕获当前时间仅限于几毫秒 ,Java 9中的一个新实现捕获高达纳秒,具体取决于计算机的硬件时钟的能力。
Instant instant = Instant.now (); // Current date-time in UTC. String output = instant.toString ();
2016-05-06T23:24:25.694Z
在中间用空格replaceT
,用空格replaceZ
,得到你想要的结果。
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23:24:25.694
由于您不关心包含偏移量或时区,请设置与任何特定地点无关的“本地”date时间。
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
乔达时间
非常成功的Joda-Time库是java.time框架的灵感。 方便的时候可以迁移到java.time。
ISO 8601格式包含毫秒,并且是Joda-Time 2.4库的默认格式。
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
当运行…
Now: 2013-11-26T20:25:12.014Z
另外,如果需要,您可以要求毫秒数为一个数字:
int millisOfSecond = myDateTime.getMillisOfSecond ();
为了补充上面的答案,下面是一个打印当前时间和date(包括毫秒)的程序的小例子。
import java.text.SimpleDateFormat; import java.util.Date; public class test { public static void main(String argv[]){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); Date now = new Date(); String strDate = sdf.format(now); System.out.println(strDate); } }
我会用这样的东西:
String.format("%tF %<tT.%<tL", dateTime);
variablesdateTime
可以是任何date和/或时间值,请参阅JavaDoc for Formatter
。
你可以简单地以你想要的格式来获得它。
String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));