지금부터 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
사용 TimeUtil
IS를 :
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
, Duration
및 Interval
클래스를. 개체에서 기간 개체를 더하거나 뺄 수 있습니다 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의 년 전 끔찍한 대체하는 것이 클래스 Date
및 Calendar
클래스.
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
'IT TIP' 카테고리의 다른 글
CSS에서 6 자리 색상 코드 대신 3 자리 색상 코드를 사용하는 방법은 무엇입니까? (0) | 2020.12.14 |
---|---|
속성에 대한 고유 한 유효성 검사 규칙이있는 Laravel 업데이트 모델 (0) | 2020.12.13 |
Python에서 JSON 출력 정렬 (0) | 2020.12.13 |
Rails ActiveRecord 모델을 읽기 전용으로 만드는 쉬운 방법이 있습니까? (0) | 2020.12.13 |
AndroidManifest.xml이 누락되었습니다. (0) | 2020.12.13 |