2014-01-08 17 views
0

안드로이드/자바에서 날짜에 대한 혼란이 거의 없을 수도 있습니다. 내가 아는 것은 new Date()을 호출하면 Date 인스턴스가 현재 UTC 날짜와 시간으로 생성됩니다. 그렇습니까? 왜냐하면 내가 new Date().getTime()long 값 (시간 스탬프) UTC로, 현지 시간이 아닌 권리를 얻을 것이다 전화 Date은 자바에서 어떤 표준 시간대 물건이 없어?안드로이드에서 현지 날짜를 길게 잡으십시오, 아마도 혼란?

날짜를 표시하려면 'DateFormat'을 사용하고 표준 시간대 정보가 있어야합니다. 그래서 DateFormat.getDateTimeInstance().format(new Date())라고 부르면 현지 시간으로 string가됩니다.

그러나 로컬 시간의 긴 값 (타임 스탬프)을 얻으려면 어떻게해야합니까 ?? 나는이 answer을 발견했다. 그러나 그것은 유일한 길이다? 또는 더 간단한 무엇인가?

감사합니다 :)

답변

1

을 내가하지 현지 시간으로, 내가 UTC로 긴 값 (타임 스탬프)을 얻을 것이다 new Date().getTime()를 호출 그렇다면, 맞죠?

음, 1970 년 1 월 1 일 00:00:00 UTC 이후의 시간 (밀리 초)을 제공합니다. 특히 UTC에서는 그렇지 않습니다. 그것은 임의의 신기원 이후 단지 수 밀리 세컨드에 불과합니다.

그러나 현지 시간의 긴 값 (타임 스탬프)을 얻으려면 어떻게해야합니까?

기본적으로 그렇지 않습니다. 그것은 특히 유용한 개념이 아니라는 것을 알 수 있습니다. 생각해 보면 타임 스탬프는 시간대와 관계가 없습니다. 너 수 있습니다 어떤 시간대에 유닉스 시대를 표현; 그것은 정상적으로 UTC의 관점에서 정상적으로 표현됩니다.

특정 타임 스탬프에 대해 로컬 날짜/시간이 필요한 경우 타임 스탬프 자체와 해당 시간대를 기억하면됩니다. 우리가 성취하려는 것에 대해 더 많은 정보를 주면, 우리는 더 많은 것을 도울 수있을 것입니다.

0

Date.getTime javadocs : Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object을 참조하십시오. 로컬 타임 스탬프가 없습니다. 다른 텍스트 날짜/시간 표현 만 가능할 수 있습니다.

0

지역 날짜를 가져 오기 위해 사용해 볼 수 있습니다.

String s=new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH).format(new Date()); 

또는

Calendar c=Calendar.getInstance(TimeZone.getTimeZone("GMT")); 
관련 문제