특정 시간대가있는 문자열 형식의 datetime이 있지만 서버 백엔드로 보낼 수 있도록 UTC 형식으로 변환 할 수 없습니다. 데이터 베이스. 날짜 및 시간 선택기 후의datetime을 utc 형식으로 변환
문자열 : "30-9-2016 15시 10분 아시아/콜카타"당신은 'currentDate.utc()를 사용할 수 있습니다
특정 시간대가있는 문자열 형식의 datetime이 있지만 서버 백엔드로 보낼 수 있도록 UTC 형식으로 변환 할 수 없습니다. 데이터 베이스. 날짜 및 시간 선택기 후의datetime을 utc 형식으로 변환
문자열 : "30-9-2016 15시 10분 아시아/콜카타"당신은 'currentDate.utc()를 사용할 수 있습니다
UTC 형식으로 변환 할 수 필요 형식(). '날짜를 UTC로 변환합니다.
joda http://www.joda.org/joda-time/을 사용해보세요. 에서
이 조각 결과 "2016-09-30T09 : 40 : 00.000Z"
public String convert(String timeStamp) {
DateTimeFormatter fmt = DateTimeFormat.forPattern("d-M-yyyy HH:mm ZZZ");
DateTime dt = fmt.parseDateTime(timeStamp);
return dt.toInstant().toString();
}
SimpleDateFormat는 "아시아/콜카타"와 같은 시간대 식별자를 분석 할 수있는 옵션이 부족한 것 같다 클래스 (어느 영역 이름이나 오프셋). 이 종류의 tz 정보를 정확히 나타내는 패턴 기호 VV는 없습니다.
당신이 SimpleDateFormat
를 사용하여 주장하는 경우에 당신은 같은 문자열 전처리를 사용하여이 제한을 우회 할 수 :
input = input.replace("Asia/Kolkata", "GMT+05:30");
// and then use pattern symbol "z" or "Z"
주요 단점은 : 당신은 당신의 입력에 사용되는 콘크리트 TZ 식별자에 대한 고정 배선 가정을.
그러나 패턴 기호 "VV"를 사용하여 "Asia/Kolkata"또는 이와 유사한 식별자를 구문 분석 할 수있는 다른 라이브러리가 3 개 이상 있습니다.
a) ThreetenABP -
C sven4all @의 답변을 자바 8
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d-M-yyyy HH:mm VV");
Instant instant = ZonedDateTime.parse(input, dtf).toInstant();
java.util.Date jud = new java.util.Date(instant.toEpochMilli());
b)에 java.time 패키지의 백 포트의 로이드 적응) 내 라이브러리 Time4A
ChronoFormatter<Moment> f =
ChronoFormatter.ofMomentPattern(
"d-M-yyyy HH:mm VV", PatternType.CLDR, Locale.ROOT, ZonalOffset.UTC);
Moment moment = f.parse(input);
java.util.Date jud = TemporalType.JAVA_UTIL_DATE.from(moment);
데이터베이스에 저장하려면 java.sql.Timestamp
과 같이 다른 변환이 필요할 수 있습니다.
GMT 직원도 처리해야합니다. –
무엇을 의미합니까? – sven4all
Joda-Time은 "Asia/Kolkata"와 같은 식별자를 구문 분석 할 수 없습니다. –