IT TIP

지금부터 5 초 후 Java로 어떻게 말합니까?

itqueen 2020. 12. 13. 11:38
반응형

지금부터 5 초 후 Java로 어떻게 말합니까?


Date 문서를 보고 NOW + 5 초를 표현할 수있는 방법을 알아 내려고합니다. 다음은 의사 코드입니다.

import java.util.Date
public class Main {

    public static void main(String args[]) {
         Date now = new Date();
         now.setSeconds(now.getSeconds() + 5);
    }
}

날짜 는 거의 완전히 사용되지 않으며 이전 버전과의 호환성을 위해 여전히 존재합니다. 특정 날짜를 설정하거나 날짜 산술을 수행해야하는 경우 달력을 사용하십시오 .

Calendar calendar = Calendar.getInstance(); // gets a calendar using the default time zone and locale.
calendar.add(Calendar.SECOND, 5);
System.out.println(calendar.getTime());

당신이 사용할 수있는:

now.setTime(now.getTime() + 5000);

Date.getTime()그리고 setTime()항상 1970 년 1 월 1 일 오전 12시 (UTC) 이후의 밀리 초를 나타냅니다.

Joda-Time

그러나 가장 간단한 날짜 / 시간 처리 이상의 작업을 수행하는 경우 Joda Time 을 사용 하는 것이 좋습니다. 그것은이다 훨씬 더 유능하고 친절한 라이브러리에 내장 된 자바 지원.

DateTime later = DateTime.now().plusSeconds( 5 );

java.time

Joda-Time은 나중에 Java 8에 내장 된 새로운 java.time 패키지에 영감을주었습니다 .


한 줄짜리 해키 출발에서 :

new Date( System.currentTimeMillis() + 5000L)

귀하의 예에서 이해했듯이 'now'는 실제로 'now'이고 "System.currentTimeMillis () '는 동일한'now '개념을 나타냅니다. :-)

그러나 조다 시간 API가 흔들리는 것보다 더 복잡한 모든 것이 있습니다.


다른 사람들이 지적했듯이 Joda 에서는 훨씬 쉽습니다.

DateTime dt = new DateTime();
DateTime added = dt.plusSeconds(5);

Joda로 마이그레이션하는 것이 좋습니다. SO에 대한 거의 모든 Java 날짜 관련 질문은 Joda 권장 사항으로 해결됩니다. :-) Joda API는 새로운 표준 Java 날짜 API (JSR310)의 기반이되어야하므로 새로운 표준으로 마이그레이션하게됩니다.


Dates질문을 무시 하고 집중합니다.

java.util.concurrent.TimeUnit코드에 명확성을 추가하기 때문에 선호하는 것입니다 .

자바에서는

long now = System.currentTimeMillis();

발 5초 now사용 TimeUtilIS를 :

long nowPlus5Seconds = now + TimeUnit.SECONDS.toMillis(5);

참조 : http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html


업데이트 : java.time 클래스를 사용하여 내 새로운 답변참조하십시오 . 이 답변을 역사로 그대로 둡니다.

도움말 파스칼 Thivent에 의해 및 도움말 존 소총으로는 정확하고 좋은 모두. 여기에 약간의 추가 정보가 있습니다.

5 초 = PT5S(ISO 8601)

"5 초 후"라는 아이디어를 표현하는 또 다른 방법은 ISO 8601에 정의 된 표준 형식을 사용하는 문자열 입니다. 기간 / 시간 형식 이 패턴이 PnYnMnDTnHnMnS어디에 P마크 시작과 T분리형 시간 부분에서 날짜 부분.

그래서 5 초는 PT5S입니다.

Joda-Time

Joda 타임 2.8 라이브러리는 모두 생성 및 지속 시간 / 기간 문자열을 구문 분석 할 수 있습니다. 참고 항목 Period, DurationInterval클래스를. 개체에서 기간 개체를 더하거나 뺄 수 있습니다 DateTime.

많은 예제와 토론을 위해 StackOverflow를 검색하십시오. 다음은 간단한 예입니다.

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( zone );
DateTime then = now.plusSeconds( 5 );
Interval interval = new Interval( now, then );
Period period = interval.toPeriod( );

DateTime thenAgain = now.plus( period );

콘솔에 덤프합니다.

System.out.println( "zone: " + zone );
System.out.println( "From now: " + now + " to then: " + then );
System.out.println( "interval: " + interval );
System.out.println( "period: " + period );
System.out.println( "thenAgain: " + thenAgain );

실행할 때.

zone: America/Montreal
From now: 2015-06-15T19:38:21.242-04:00 to then: 2015-06-15T19:38:26.242-04:00
interval: 2015-06-15T19:38:21.242-04:00/2015-06-15T19:38:26.242-04:00
period: PT5S
thenAgain: 2015-06-15T19:38:26.242-04:00

tl; dr

Instant             // Use modern `java.time.Instant` class to represent a moment in UTC.
.now()              // Capture the current moment in UTC.
.plusSeconds( 5 )   // Add five seconds into the future. Returns another `Instant` object per the Immutable Objects pattern.

java.time

현대 사용 java.time의 년 전 끔찍한 대체하는 것이 클래스 DateCalendar클래스.

UTC

UTC에서 작업하려면 Instant.

Instant later = Instant.now().plusSeconds( 5 ) ;

시간대

특정 시간대에서 작업하려면을 사용하십시오 ZonedDateTime.

ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime later = ZonedDateTime.now( z ).pluSeconds( 5 ) ;

Duration

추가 할 시간의 양과 세분성을 소프트 코딩 할 수 있습니다. Duration수업을 사용하십시오 .

Duration d = Duration.ofSeconds( 5 ) ;
Instant later = Instant.now().plus( d ) ;  // Soft-code the amount of time to add or subtract.

방금 자바 문서 에서 찾았습니다.

import java.util.Calendar;

public class Main {

  public static void main(String[] args) {
    Calendar now = Calendar.getInstance();
    System.out.println("Current time : " + now.get(Calendar.HOUR_OF_DAY) + ":"
        + now.get(Calendar.MINUTE) + ":" + now.get(Calendar.SECOND));

    now.add(Calendar.SECOND, 100);
    System.out.println("New time after adding 100 seconds : " + now.get(Calendar.HOUR_OF_DAY) + ":"
        + now.get(Calendar.MINUTE) + ":" + now.get(Calendar.SECOND));
  }
}

내가 알아야 할 컨벤션이 있습니까?


        String serverTimeSync = serverTimeFile.toString();
        SimpleDateFormat serverTime = new SimpleDateFormat("yyyy,MM,dd,HH,mm,ss");
        Calendar c = Calendar.getInstance();
        c.setTime(serverTime.parse(serverTimeSync));
        c.add(Calendar.MILLISECOND, 15000);
        serverTimeSync = serverTime.format(c.getTime());

public class datetime {

    public String CurrentDate() {        
        java.util.Date dt = new java.util.Date();
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        String currentTime = sdf.format(dt);
        return currentTime;
    }

    public static void main(String[] args) {
        class SayHello extends TimerTask {
            datetime thisObj = new datetime();
            public void run() {
                String todaysdate = thisObj.CurrentDate();
                System.out.println(todaysdate);
            }
        }
        Timer timer = new Timer();
        timer.schedule(new SayHello(), 0, 5000); 
    }
}

이 시도..

    Date now = new Date();
    System.out.println(now);

    Calendar c = Calendar.getInstance();
    c.setTime(now);
    c.add(Calendar.SECOND, 5);
    now = c.getTime();

    System.out.println(now);

    // Output
    Tue Jun 11 16:46:43 BDT 2019
    Tue Jun 11 16:46:48 BDT 2019

참고 URL : https://stackoverflow.com/questions/1655357/how-do-i-say-5-seconds-from-now-in-java

반응형