source

현재 시각을 YYY-MM-DD HH로 취득하는 방법:MI: Sec.Millisecond 포맷(Java)

manycodes 2022. 12. 25. 09:44
반응형

현재 시각을 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 형식을 사용합니다.aZZuluUTC를 의미합니다.

는 타임라인상의 순간을 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");

위의 형식도 유용합니다.

http://www.java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm

응답:

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

반응형