Java: Unix 타임스탬프의 날짜
유닉스 타임스탬프를 날짜 개체로 변환해야 해.
난 이렇게 해봤어:
java.util.Date time = new java.util.Date(timeStamp);
타임스탬프 값:1280512800
날짜는 "2010/07/30 - 22:30:00"이어야 하지만(PHP에 의해 얻어진 날짜) 대신Thu Jan 15 23:11:56 IRST 1970
.
어떻게 해야 하는가?
을 위해1280512800
, java가 밀리초를 예상하므로 1000을 곱하십시오.
java.util.Date time=new java.util.Date((long)timeStamp*1000);
이미 밀리초가 있었다면,new java.util.Date((long)timeStamp);
설명서:
날짜 객체를 할당하고 "epoch"로 알려진 표준 기준 시간(즉, 1970년 1월 1일, 00:00:00 GMT) 이후 지정된 밀리초 단위로 초기화한다.
자바.시간
Java 8은 날짜와 시간, 즉 Java.time 패키지를 사용하기 위한 새로운 API를 도입했다.
Java.time을 사용하면 UTC에서 1970년 첫 번째 순간의 획기적 참조 이후 전체 초를 구문 분석할 수 있다.결과는 입니다.
Instant instant = Instant.ofEpochSecond( timeStamp );
만약 당신이 a가java.util.Date
Java.time에 대해 아직 업데이트되지 않은 기존 코드와 상호 운용하려면 변환하십시오.이전 클래스에 추가된 새 변환 메서드를 호출하십시오.
Date date = Date.from( instant );
이것이 올바른 방법이다:
Date date = new Date ();
date.setTime((long)unix_time*1000);
tl;dr
Instant.ofEpochSecond( 1_280_512_800L )
2010-07-30T18:00:00Z
자바.시간
Java 8 이상에 구축된 새로운 Java.time 프레임워크는 Joda-time의 후속 버전이다.
이 새로운 등급들은 시대로부터 초의 카운트를 변환할 수 있는 편리한 공장 방법을 포함하고 있다.당신은 그것을 얻는다.Instant
최대 나노초 해상도의 UTC 시간 표시 막대에 있는 순간.
Instant instant = Instant.ofEpochSecond( 1_280_512_800L );
instant.toString(): 2010-07-30T18:00:00Z
IdeOne.com에서 실시간으로 코드를 실행하십시오.
Asia/Kabul
또는Asia/Tehran
시간대는?
여기서 본 18:00이 아닌 22:30의 시간 값을 얻었다고 보고하셨습니다.나는 당신의 PHP 유틸리티가 UTC에서 조정하기 위해 기본 시간대를 암묵적으로 적용하고 있다고 생각한다.여기서 나의 가치는 UTC이다.Z
(의 줄임말)Zulu
, UTC를 의미한다.컴퓨터 OS 또는 PHP가 다음으로 설정될 가능성Asia/Kabul
아니면 시간대?네 보고에 의하면 그렇겠지.IRST
이란의 시간을 의미하는 것 같군현재 2017년에는 UTC보다 4시간 30분 빠른 여름 시간으로 운영되는 유일한 지역이다.
다음 형식으로 적절한 표준 시간대 이름 지정continent/region
, , , 또는 같은Pacific/Auckland
. 다음과 같은 3-4 문자 약어를 사용하지 마십시오.EST
또는IST
또는IRST
그들은 진정한 시간대가 아니며, 표준화되지 않았으며, 심지어 독특하지도 않기 때문이다.
특정 지역의 시간대의 렌즈를 통해 자신의 순간을 보고 싶다면, a를 적용하라.ZoneId
여전히 같은 동시시점이지만 다른 월 클럭 시간으로 보여진다.
ZoneId z = ZoneId.of( "Asia/Tehran" ) ;
ZonedDateTime zdt = instant.atZone( z ); // Same moment, same point on timeline, but seen as different wall-clock time.
2010-07-30T22:30+04:30[아시아/테흐란]
Java.time에서 레거시 클래스로 변환
당신은 새로운 Java.time 클래스를 고수해야 한다.하지만 필요하다면 노후로 전환할 수도 있다.
java.util.Date date = java.util.Date.from( instant );
조다 타임
UPDATE: Joda-Time 프로젝트는 현재 유지 보수 모드에 있으며, 팀은 Java.Time 클래스로 마이그레이션을 권고한다.
Joda-TimeDateTime의 생성자인 FYI는 유사하다.천을 곱하여 a를 생산하다.long
(an이 아니다)int
!).
DateTime dateTime = new DateTime( ( 1_280_512_800L * 1000_L ), DateTimeZone.forID( "Europe/Paris" ) );
말썽꾸러기로 악명 높은 자바.util을 피하는 것이 가장 좋다.날짜 및 .일정관리 클래스.그러나 만약 당신이 날짜를 사용해야 한다면, 당신은 Joda-Time에서 변환할 수 있다.
java.util.Date date = dateTime.toDate();
java.time 정보
자바.시간 프레임워크는 Java 8 이상에 내장되어 있다.이러한 수업은 , , & 같은 골치 아픈 오래된 레거시 날짜-시간 수업을 대체한다.
현재 유지보수 모드에 있는 조다 타임 프로젝트는 Java.time 클래스로의 마이그레이션을 권고한다.
자세한 내용은 Oracle 자습서를 참조하십시오.그리고 스택 오버플로를 검색하여 많은 예와 설명을 참조하십시오.사양은 JSR 310이다.
Java.time 객체를 데이터베이스와 직접 교환할 수 있다.JDBC 4.2 이상과 호환되는 JDBC 드라이버를 사용하십시오.끈이 필요 없고, 끈이 필요 없다.java.sql.*
반
Java.time 클래스를 가져올 위치
- Java SE 8, Java SE 9 이상
- 붙박이
- 번들 구현이 포함된 표준 Java API의 일부.
- Java 9는 몇 가지 사소한 기능과 수정 사항을 추가했다.
- Java SE 6 및 Java SE 7
- 대부분의 Java.time 기능은 스리텐 백포트에서 Java 6 & 7로 역포팅된다.
- 안드로이드
- 이후 버전의 Android 번들 구현 Java.time 클래스.
- 이전의 Android (<26)의 경우, 스리텐ABP 프로젝트는 ThreeTen-Backport (위에서 언급)를 채택한다.ThreeTenABP 사용 방법을 참조하십시오.
스리텐 엑스트라 프로젝트는 추가 클래스와 함께 java.time을 확장한다.이 프로젝트는 Java.time에 향후 추가될 가능성이 있는 입증의 장이다.당신은 여기서 , , , , 그리고 그 이상과 같은 몇 가지 유용한 수업들을 찾을 수 있을 것이다.
달력이 새로운 방법인 것 같다.
Calendar mydate = Calendar.getInstance();
mydate.setTimeInMillis(timestamp*1000);
out.println(mydate.get(Calendar.DAY_OF_MONTH)+"."+mydate.get(Calendar.MONTH)+"."+mydate.get(Calendar.YEAR));
마지막 줄은 사용 방법의 예일 뿐이며, 이 선은 "14.06.212"와 같이 인쇄될 것이다.
System.currentTimeMillis()를 사용하여 타임스탬프를 저장한 경우에는 "*1000" 부분이 필요하지 않다.
문자열에 타임스탬프가 있으면 먼저 Long.parseLong(timestamp)으로 구문 분석하십시오.
https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html
Date의 생성자는 timeStamp 값이 밀리초일 것으로 예상한다.타임스탬프 값에 1000을 곱한 다음 생성자에게 전달하십시오.
다른 시스템에서 타임스탬프 값을 변환하는 경우 해당 시스템의 표준 시간대도 확인하십시오.예를 들어,
EST 또는 UTC 시간대를 사용하여 실행할 경우 위의 설명에 따라 날짜 값이 다르게 나타난다.
표준 시간대를 UTC로 설정하려면 간단히 다시 작성하십시오.
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
java.util.Date time= new java.util.Date((Long.parseLong(timestamp)*1000));
코틀린용
fun unixToDate(timeStamp: Long) : String? {
val time = java.util.Date(timeStamp as Long * 1000)
val sdf = SimpleDateFormat("yyyy-MM-dd")
return sdf.format(time)
}
때로는 조정 작업을 해야 할 때도 있다.
깁스를 오래 하지 마!나노 조정을 사용한다.
예를 들어, 거래에 Oanda Java API를 사용하면 UNIX 형식으로 datetime을 얻을 수 있다.
예: 1592523410.590566943
System.out.println("instant with nano = " + Instant.ofEpochSecond(1592523410, 590566943));
System.out.println("instant = " + Instant.ofEpochSecond(1592523410));
다음과 같은 이점을 누리십시오.
instant with nano = 2020-06-18T23:36:50.590566943Z
instant = 2020-06-18T23:36:50Z
또한 다음을 사용하십시오.
Date date = Date.from( Instant.ofEpochSecond(1592523410, 590566943) );
Date d = new Date(i * 1000 + TimeZone.getDefault().getRawOffset());
참조URL: https://stackoverflow.com/questions/3371326/java-date-from-unix-timestamp
'IT이야기' 카테고리의 다른 글
리사이클러 보기 어댑터에서 컨텍스트를 가져오는 방법 (0) | 2022.05.26 |
---|---|
Vuelidate 날짜 입력 필드 (0) | 2022.05.26 |
VueJS 두 매개 변수를 Vuex 작업에 전달하는 방법 (0) | 2022.05.26 |
플랫폼에서 "긴"과 "int"의 크기가 동일하다면 - "긴"과 "int"는 어떤 면에서 다른가? (0) | 2022.05.26 |
명시적으로 선언되지 않은 Vue 소품 (0) | 2022.05.26 |