2014-10-29 3 views
7

String myDate = "2014/10/29 18:10:45"long ms (i.e. currentinmlilies)으로 변환 하시겠습니까? Google에서 찾았지만 날짜으로 변환하는 방법 만 찾을 수 있습니다.날짜를 밀리 초로 변환하는 방법

참고 : 분명히하기 위해 1970/1/1/1 형식의 날짜로부터 ms를 가져 오려고합니다.

+1

SimpleDateFormat은 (는) 귀하의 친구입니다. – user2336315

+0

어떻게 날짜를 밀리 초로 변환 하시겠습니까? – brso05

+0

또한 ms? – brso05

답변

27

Date이 없으면 String으로 표시됩니다. StringDate으로 변환 한 다음 밀리 초를 얻어야합니다. StringDate으로 또는 그 반대로 변환하려면 SimpleDateFormat 클래스를 사용해야합니다. 자바에서 얻어진 밀리 원하는 시대 사이의 밀리 초이기 때문에

String myDate = "2014/10/29 18:10:45"; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
Date date = sdf.parse(myDate); 
long millis = date.getTime(); 

여전히주의 : 여기에

은 (시간대는 여기에 포함되지 않은 가정) 할 수있는 당신이 원하는 것을/필요 예입니다 1970-01-01 00:00:00.

3

SimpleDateFormat 클래스를 사용하면 Stringjava.util.Date 개체로 구문 분석 할 수 있습니다. Date 객체를 얻은 후에는 Date.getTime()을 호출하여 기원 이후의 밀리 초를 가져올 수 있습니다.

전체 예 :이 당신에게로 더블 long하지를 제공,하지만 그건 당신이 의도 아마 생각

String myDate = "2014/10/29 18:10:45"; 
//creates a formatter that parses the date in the given format 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
Date date = sdf.parse(myDate); 
long timeInMillis = date.getTime(); 

참고. SimpleDateFormat 클래스의 설명서에는 다양한 형식을 구문 분석하도록 설정하는 방법에 대한 정보가 있습니다.

1

시간대

허용 대답은 시간대의 중요한 문제를 무시하는 것을 제외하고, 올바른 것입니다. 파리 또는 몬트리올에서 입력 문자열이 오후 6시 10 분입니까? 또는 UTC?

proper time zone name을 사용하십시오. 보통 대륙과 도시/지역. 예 : "Europe/Oslo". 표준화되거나 고유하지 않은 3 자 또는 4 자 코드를 사용하지 마십시오.

Joda 타임

아래 코드의 같은 종류가 있지만 Joda-Time 2.5 라이브러리를 사용하여 시간대를 처리.

java.util.Date, .Calendar 및 .SimpleDateFormat 클래스는 매우 골칫거리이며 혼란스럽고 결함이 있습니다. 그들을 피하십시오. 8601

귀하의 문자열이 거의 ISO 8601 형식으로되어 ISO

자바 8에 내장 된 Joda 타임 또는 (Joda 타임에서 영감)을 java.time 패키지 중 하나를 사용합니다. 슬래시는 하이픈이어야하며 중간의 SPACE는 T으로 바꿔야합니다. 우리가 그것을 조정하면 결과 문자열은 포맷터를 지정하지 않고도 생성자에 직접 입력 할 수 있습니다. Joda-Time은 ISO 8701 형식을 사용하므로 문자열을 파싱하고 생성 할 때 기본값으로 사용됩니다.

예제 코드

String inputRaw = "2014/10/29 18:10:45"; 
String input = inputRaw.replace("/", "-").replace(" ", "T"); 
DateTimeZone zone = DateTimeZone.forID("Europe/Oslo"); // Or DateTimeZone.UTC 
DateTime dateTime = new DateTime(input, zone); 
long millisecondsSinceUnixEpoch = dateTime.getMillis(); 
+0

노르웨이에있는 DateTimeZone ID는 무엇입니까? GMT +1에 관한 것입니다. 잘 모르겠습니다. – HydroTekZ

+0

@HydroTekZ 편집을 참조하십시오. –

2

2017 대답은 : 자바 8에 소개 된 날짜와 시간 클래스를 사용하여 (또한 ThreeTen Backport 자바 6, 7 백 포트). 컴퓨터의 시간대의 날짜 - 시간 문자열을 해석하려면

는 :

long millisSinceEpoch = LocalDateTime.parse(myDate, DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss")) 
      .atZone(ZoneId.systemDefault()) 
      .toInstant() 
      .toEpochMilli(); 

다른 시간대의 경우를, 대신의 ZoneId.systemDefault() 그 영역을 입력합니다. UTC 인 경우

long millisSinceEpoch = LocalDateTime.parse(myDate, DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss")) 
      .atOffset(ZoneOffset.UTC) 
      .toInstant() 
      .toEpochMilli(); 
+0

LocalDateTime이 정의되지 않았습니다. –

+0

@ YASHDAVE에 다시 신고 해 주셔서 감사합니다. 'LocalDateTime'을 가져와야합니다. 자바 8 이상을 사용한다면,'import java.time.LocalDateTime';을 사용하십시오. Java 6 또는 7 인 경우, 응답에 연결된 ThreeTen Backport를 가져온 다음'import org.threeten.bp.LocalDateTime; '을 사용하십시오. –

관련 문제