현재 시각을 YYY-MM-DD HH로 취득하는 방법:MI: Sec.Millisecond 포맷(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;
}
는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.YYYY-MM-DD HH:MM:SS
)2009-09-22 16:47:08
를 참조해 주세요.
하지만 현재 시간을 다음 형식으로 가져오고 싶습니다.YYYY-MM-DD HH:MM:SS.MS
)2009-09-22 16:47:08.128
서, snowledge.128
리입입입입다
SimpleTextFormat
정상적으로 동작합니다.여기서 가장 낮은 시간 단위는 2초인데 어떻게 밀리초를 얻을 수 있을까요?
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
자바 원 라이너
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"));
}
날짜 형식 문자열에 millisecond 필드만 추가하면 됩니다.
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
SimpleDateFormat의 API 문서에서 포맷 문자열에 대해 자세히 설명합니다.
이것을 시험해 보세요:-
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()));
dr;dr
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 프레임워크에서 영감을 얻었으며, 그 후속작으로서 컨셉은 비슷하지만 재구축되었습니다.JSR 310에 의해 정의됩니다.ThreeTen-Extra 프로젝트에 의해 확장됩니다.튜토리얼을 참조해 주세요.
java.time은 양쪽 java.util의 밀리초 분해능(소수점 3자리)에 비해 나노초 분해능(초당 소수점 9자리)이 가능합니다.날짜와 Joda-Time.따라서 소수점 세 자리만 표시하도록 포맷할 경우 데이터를 숨길 수 있습니다.
데이터에서 마이크로초 또는 나노초를 제거하려면 잘라냅니다.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
java.time 클래스는 문자열을 해석/생성할 때 기본적으로 ISO 8601 형식을 사용합니다.aZ
에 Zulu
UTC를 의미합니다.
는 타임라인상의 순간을 UTC 단위로 나타냅니다.해상도는 최대 나노초입니다.Java 8에서 현재 순간을 캡처하는 것은 밀리초로 제한되며, Java 9에서는 컴퓨터의 하드웨어 클럭 성능에 따라 최대 나노초를 캡처합니다.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23:24:25.694Z
「 「 」를 교환해 .T
이 있고, 에 있는 것이 '공백'입니다.Z
을 사용법
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
오프셋이나 타임존을 포함해도 상관없기 때문에 특정 지역과는 무관한 "로컬" 날짜 시간을 설정합니다.
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
또, 필요에 따라서, 밀리초의 fraction-of-second 를 수치로서 지정할 수도 있습니다.
int millisOfSecond = myDateTime.getMillisOfSecond ();
가장 쉬운 방법은 (Java 8보다 이전) 를 사용하는 것입니다.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
그러나 SimpleDateFormat은 스레드 세이프가 아닙니다.java.util도 없습니다.날짜. 이로 인해 사용자의 동시성 문제가 발생할 수 있습니다.그리고 기존의 디자인에는 많은 문제가 있습니다.Java 8에서는 이러한 문제를 해결하기 위해 java.time이라는 별도의 패키지가 있습니다.이 Java SE 8 날짜 및 시간 문서에는 이에 대한 개요가 나와 있습니다.
따라서 Java 8에서는 다음과 같은 기능이 작동합니다(현재 날짜/시간 형식을 지정하기 위해).
LocalDateTime.now()
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
그리고 한 가지 주의할 점은 인기 있는 서드파티 도서관 Joda-time의 도움으로 개발되었다는 것입니다.
이 프로젝트는 JSR 310의 Joda-Time(Stephen Colebourne)과 Oracle의 공동 주도로 진행되어 새로운 Java SE 8 패키지 java.time에 등장합니다.
은 그 ★★★★★★★★★★★★★★★★★★.joda-time
는 더 이상 되지 않게 에게 새로운 로의되고 있습니다.java.time
.
Java SE 8 이후에는 이 프로젝트를 대체하는 JDK의 핵심 부분인 java.time(JSR-310)으로 이행해야 합니다.
어쨌든 그런 말을 했으니
일정관리 인스턴스가 있는 경우 아래를 사용하여 새 인스턴스로 변환할 수 있습니다.java.time
,
Calendar calendar = Calendar.getInstance();
long longValue = calendar.getTimeInMillis();
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
String formattedString = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(date.toString()); // 2018-03-06T15:56:53.634
System.out.println(formattedString); // 2018-03-06 15:56:53.634
Date 객체가 있는 경우
Date date = new Date();
long longValue2 = date.getTime();
LocalDateTime dateTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue2), ZoneId.systemDefault());
String formattedString = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
System.out.println(dateTime.toString()); // 2018-03-06T15:59:30.278
System.out.println(formattedString); // 2018-03-06 15:59:30.278
에폭밀리초만 있으면
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(epochLongValue), ZoneId.systemDefault());
저는 다음과 같은 것을 사용합니다.
String.format("%tF %<tT.%<tL", dateTime);
" "dateTime
에는 임의의 날짜 및/또는 시간 값을 지정할 수 있습니다.JavaDoc for 를 참조해 주세요.
여기 간단한 예가 있습니다. 밀리초로 날짜와 시간을 표시합니다...
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class MyClass{
public static void main(String[]args){
LocalDateTime myObj = LocalDateTime.now();
DateTimeFormatter myFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
String forDate = myObj.format(myFormat);
System.out.println("The Date and Time are: " + forDate);
}
}
위의 답변을 보완하기 위해 현재 시간과 날짜를 인쇄하는 프로그램의 작은 작동 예를 다음과 같습니다(밀리초 포함).
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);
}
}
지정된 형식으로 현재 시각을 가져오려면 다음과 같이 하십시오.
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.print(dateFormat.format(System.currentTimeMillis())); }
이에 대한 언급은 없습니다.
SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmssSSS");
위의 형식도 유용합니다.
응답:
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
ZonedDateTime start = Instant.now().atZone(ZoneId.systemDefault());
String startTimestamp = start.format(dateFormatter);
Java 8의 문서에서는 fraction-of-second라고 하고 Java 6에서는 millisecond라고 합니다.이것은 나를 혼란스럽게 했다.
java.text(Java 8에 대응)
public static ThreadLocal<DateFormat> dateFormat = new ThreadLocal<DateFormat>() {
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
};
};
...
dateFormat.get().format(new Date());
java.time
public static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
...
dateTimeFormatter.format(LocalDateTime.now());
원하는 포맷으로 입수할 수 있습니다.
String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));
언급URL : https://stackoverflow.com/questions/1459656/how-to-get-the-current-time-in-yyyy-mm-dd-hhmisec-millisecond-format-in-java
'source' 카테고리의 다른 글
vuex의 상태를 기반으로 보기를 전환하려면 어떻게 해야 합니까? (0) | 2022.12.25 |
---|---|
변수가 클래스인지 확인하는 방법 (0) | 2022.12.25 |
어떻게 두 줄을 숫자처럼 추가할 수 있죠? (0) | 2022.12.25 |
HTML 파일의 JavaScript 위치 (0) | 2022.12.25 |
클래스 JSON을 시리얼화 하는 방법 (0) | 2022.12.25 |