다음 날짜 문자열을 yyyy-MM-dd HH : mm : ss 형식의 utc 시간으로 변환하려면 샘플 코드 블록이나 제안이 필요합니다.자바를 사용하여 사용자 정의 날짜 문자열 (am/pm 포함)을 UTC 날짜 시간으로 변환
샘플 날짜 문자열 : 2017년 11월 23일 오전 9시 44분
가 이런 유사한 질문이있다 그러나 모든
다음 날짜 문자열을 yyyy-MM-dd HH : mm : ss 형식의 utc 시간으로 변환하려면 샘플 코드 블록이나 제안이 필요합니다.자바를 사용하여 사용자 정의 날짜 문자열 (am/pm 포함)을 UTC 날짜 시간으로 변환
샘플 날짜 문자열 : 2017년 11월 23일 오전 9시 44분
가 이런 유사한 질문이있다 그러나 모든
SimpleDateFormat's javadoc 목록을 중복으로 내 테스트 데이터는이를 고려 해달라고 오전/pm.So PLS 함께 옵션으로 am/pm 표식에 "a"를 포함합니다.
는 경우에, 당신이 필요합니다 아래
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ssa")
에 관한 질문이 아니거나 "MM/dd/yyyy hh : mm a"라는 질문을 정확하게 쓰지 않았다는 것을 알지 못했습니다. – suvartheec
감사합니다. 수정 : –
샘플 코드가 제대로 변환을 수행해야합니다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateConversion {
public static void main(String[] argv) {
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mma");
SimpleDateFormat OutputFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sampleDateString = "11/23/2017 09:44am";
try {
Date convertDate = formatter.parse(sampleDateString);
System.out.println(OutputFormatter.format(convertDate));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
구문 분석 할 날짜 문자열을 선언하는 것입니다.
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mma");
및 출력 날짜는 물론
SimpleDateFormat OutputFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
처음에 당신은 적절한 패턴으로 SimpleDateFormat
을 작성해야합니다. 이 클래스는 java.util.Date
로 문자열 (more info here를) 구문 분석하는 데 도움이 :
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy hh:mma");
원래 문자열 날짜가 특별한 시간대에있는 경우이 시간대 사용하는 파서를 지시해야합니다
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy hh:mma", Locale.ENGLISH);
을
는 그런 다음 날짜로 문자열을 구문 분석해야합니다
Date d = sdf.parse("11/23/2017 09:44am");
가 Finnaly 당신이 UTC에 timezoned 날짜를 변환해야합니다.
전체 코드 노호 찾아주세요 :
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy hh:mma", Locale.ENGLISH);
Date d = sdf.parse("11/23/2017 09:44am");
System.out.println(toUtcZonedDateTime(d));
}
public static ZonedDateTime toUtcZonedDateTime(final Date date) {
if (date == null) {
return null;
}
final ZoneId utcZone = ZoneOffset.UTC;
return ZonedDateTime.ofInstant(date.toInstant(), utcZone);
}
출력 :
2017-11-23T08:44Z
솔루션 주셔서 감사합니다.하지만 변환 된 utc 날짜 문자열로 원합니다. 그것을 할 방법이 있습니까? – user2392695
java.util.Date를 String으로 변환하는 두 가지 옵션이 있습니다. 첫 번째는 사용할 수있는 날짜에 toString() 메서드를 사용하는 것입니다. 두 번째 옵션은 SimpleDateFormat을 만들고 사용하는 것입니다. String dateStr = sdf.format (date) – zappee
당신이 사용할 수있는 자바 8 time
패키지 :
String input = "11/23/2017 09:44am";
String format = "MM/dd/yyyy hh:mma";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
LocalDateTime date = LocalDateTime.parse(input, formatter);
System.out.printf("%s%n", date);
그러나 문제는이 소문자 'am'때문에 DateTimeParseException
이 발생합니다.
나는 워드 프로세서를 찾았지만 메디안 지정자 처럼 소문자 'am'또는 'pm'을 구문 분석하는 표준 방법을 볼 수 없었다.
You'll end up manually replacing them : 다음
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern(format)
.toFormatter();
을 수행 할 수 있습니다 : 코멘트에 @OleVV에서 언급 한 바와 같이
input = input.replace("AM", "am").replace("PM","pm");
, 당신은 구문 분석은 대소 문자를 구분해야하는 DateTimeFormatterBuilder
를 사용하여 지정할 수 있습니다 이 포맷터를 LocalDateTime.parse
메소드의 인수로 사용하십시오.
provides a solution 위의 또 다른 대답은 소문자 변형으로 AM/PM 기호를 무시할 수 있다는 것입니다. 흥미롭게도
1
SimpleDateFormat
않습니다 지원 소문자 오전/오후의 분석.
소문자 am/pm을 처리하는 방법 : (1) 구문 분석 전에 전체 문자열을 대문자로 변환하기 만하면됩니다 (다른 문자가 없으므로, 이것은 무해하다). (2)'DateTimeFormatterBuilder'를 사용하여 (a) 간단히 : 대소 문자를 구별하지 않는 파싱을 지정하십시오 (b) AM과 PM에 사용할 리터럴 문자열을 지정하십시오. –
명시적인 로케일도 제공하는 것이 좋습니다. AM과 PM은 영어로 불려지므로 다른 언어는 다른 이름을 가질 수 있으므로 로케일이 지정된 모든 컴퓨터에서 코드가 작동하지 않을 수 있습니다. –
이 작업을 수행해야합니다. DateTimeFormatter.ofPattern ("mm/dd/yyyy hh : mm a"); –
@priyadarshiswain "M", "M", "Minute in hour" – suvartheec
가능한 복제본 [Java8 DateTimeFormatter am/pm] (https://stackoverflow.com/questions/38250379/java8-datetimeformatter-am-pm- 오후). 나는 질문에 중복을 고려하지 말 것을 권한다. 연결된 질문에 소문자가있다./대답해라. 그러면 받아 들여지는 대답은 그것을 해결한다. 그래서 나는 왜 안 볼지 모른다. –