나는 java.util.Date
형식이 yyyy-mm-dd
있습니다. 나는 그것을 형식으로 원한다mm-dd-yyyy
다음은이 변환을 위해 시도한 샘플 유틸리티입니다.
// Setting the pattern
SimpleDateFormat sm = new SimpleDateFormat("mm-dd-yyyy");
// myDate is the java.util.Date in yyyy-mm-dd format
// Converting it into String using formatter
String strDate = sm.format(myDate);
//Converting the String back to java.util.Date
Date dt = sm.parse(strDate);
여전히 내가 얻는 출력은 형식이 아닙니다 mm-dd-yyyy
.
java.util.Date
from yyyy-mm-dd
to 형식을 지정하는 방법을 알려주세요.mm-dd-yyyy
답변
Date
Unix 시대 (1970 년 1 월 1 일 00:00:00 UTC) 이후의 밀리 초 수를 나타내는 컨테이너입니다.
형식에 대한 개념이 없습니다.
자바 8 이상
LocalDateTime ldt = LocalDateTime.now();
System.out.println(DateTimeFormatter.ofPattern("MM-dd-yyyy", Locale.ENGLISH).format(ldt));
System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH).format(ldt));
System.out.println(ldt);
출력 …
05-11-2018
2018-05-11
2018-05-11T17:24:42.980
자바 7-
당신은 사용하게해야한다 ThreeTen 백 포트를
원래 답변
예를 들면 …
Date myDate = new Date();
System.out.println(myDate);
System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(myDate));
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(myDate));
System.out.println(myDate);
출력 …
Wed Aug 28 16:20:39 EST 2013
08-28-2013
2013-08-28
Wed Aug 28 16:20:39 EST 2013
어떤 형식도 기본 Date
값 을 변경하지 않았습니다 . 이것은 DateFormatter
s 의 목적입니다
추가 예제로 업데이트 됨
첫 번째 예가 이해가되지 않는 경우를 대비하여 …
이 예에서는 두 개의 포맷터를 사용하여 동일한 날짜를 포맷합니다. 그런 다음 동일한 포맷터를 사용하여 String
값을 Date
s로 다시 구문 분석합니다 . 결과 구문 분석은 Date
값을보고 하는 방식을 변경하지 않습니다 .
Date#toString
내용의 덤프 일뿐입니다. 이것을 변경할 수는 없지만 Date
원하는 방식으로 개체의 서식을 지정할 수 있습니다.
try {
Date myDate = new Date();
System.out.println(myDate);
SimpleDateFormat mdyFormat = new SimpleDateFormat("MM-dd-yyyy");
SimpleDateFormat dmyFormat = new SimpleDateFormat("yyyy-MM-dd");
// Format the date to Strings
String mdy = mdyFormat.format(myDate);
String dmy = dmyFormat.format(myDate);
// Results...
System.out.println(mdy);
System.out.println(dmy);
// Parse the Strings back to dates
// Note, the formats don't "stick" with the Date value
System.out.println(mdyFormat.parse(mdy));
System.out.println(dmyFormat.parse(dmy));
} catch (ParseException exp) {
exp.printStackTrace();
}
어떤 출력이 …
Wed Aug 28 16:24:54 EST 2013
08-28-2013
2013-08-28
Wed Aug 28 00:00:00 EST 2013
Wed Aug 28 00:00:00 EST 2013
또한 형식 패턴에주의하십시오. SimpleDateFormat
잘못된 패턴을 사용하고 있지 않은지 자세히 살펴보십시오 .)
답변
SimpleDateFormat("MM-dd-yyyy");
대신에
SimpleDateFormat("mm-dd-yyyy");
왜냐하면 MM points Month
,mm points minutes
SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy");
String strDate = sm.format(myDate);
답변
‘M'(대문자)은 월을 나타내고 ‘m'(단순)은 분을 나타냅니다.
몇 달 동안의 몇 가지 예
'M' -> 7 (without prefix 0 if it is single digit)
'M' -> 12
'MM' -> 07 (with prefix 0 if it is single digit)
'MM' -> 12
'MMM' -> Jul (display with 3 character)
'MMMM' -> December (display with full name)
몇 분의 예
'm' -> 3 (without prefix 0 if it is single digit)
'm' -> 19
'mm' -> 03 (with prefix 0 if it is single digit)
'mm' -> 19
답변
tl; dr
LocalDate.parse(
"01-23-2017" ,
DateTimeFormatter.ofPattern( "MM-dd-uuuu" )
)
세부
yyyy-mm-dd 형식의 java.util.Date가 있습니다.
다른 언급과 같이 Date
클래스에는 형식이 없습니다. 1970 년이 시작된 이후 UTC로 밀리 초를 계산합니다. 첨부 된 문자열이 없습니다.
java.time
다른 Answers는 이제 java.time 클래스로 대체 된 귀찮은 오래된 레거시 날짜-시간 클래스를 사용합니다.
가있는 경우 객체 java.util.Date
로 변환하십시오 Instant
. 이 Instant
클래스는 나노초 단위 (소수점의 최대 9 자리) 의 해상도로 타임 라인의 한 순간을 UTC 로 나타냅니다 .
Instant instant = myUtilDate.toInstant();
시간대
다른 답변은 시간대의 중요한 문제를 무시합니다. 날짜를 결정하려면 시간대가 필요합니다. 주어진 순간에 날짜는 지역별로 전 세계적으로 다릅니다. 파리의 자정 이후 몇 분이 지나면 프랑스는 새로운 날이지만 몬트리올 퀘벡에서는 여전히 “어제”입니다.
.NET Framework에 대한 컨텍스트를 원하는 시간대를 정의하십시오 Instant
.
ZoneId z = ZoneId.of( "America/Montreal" );
적용 ZoneId
을 얻을 ZonedDateTime
.
ZonedDateTime zdt = instant.atZone( z );
LocalDate
시간없이 날짜에만 관심이 있다면 LocalDate
.
LocalDate localDate = zdt.toLocalDate();
표준 ISO 8601 형식 인 YYYY-MM-DD로 문자열을 생성하려면 toString
. java.time 클래스는 문자열을 생성 / 파싱 할 때 기본적으로 표준 형식을 사용합니다.
String output = localDate.toString();
2017-01-23
MM-DD-YYYY 형식을 원하는 경우 형식화 패턴을 정의하십시오.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM-dd-uuuu" );
String output = localDate.format( f );
형식화 패턴 코드는 대소 문자를 구분합니다. 질문의 코드 mm
가 MM
(월 )이 아닌 잘못 사용되었습니다 (분 ).
DateTimeFormatter
구문 분석에 동일한 개체를 사용합니다 . java.time 클래스는 스레드로부터 안전하므로이 객체를 유지하고 스레드간에 반복적으로 재사용 할 수 있습니다.
LocalDate localDate = LocalDate.parse( "01-23-2017" , f );
java.time 정보
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 – 시간의 수업을 java.util.Date
, Calendar
, SimpleDateFormat
.
Joda 타임 프로젝트는 지금에 유지 관리 모드 의로 마이그레이션을 조언 java.time의 클래스.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오. 사양은 JSR 310 입니다.
java.time 클래스는 어디서 구할 수 있습니까?
- Java SE 8 및 SE 9 이상
- 내장.
- 번들로 구현 된 표준 Java API의 일부입니다.
- Java 9에는 몇 가지 사소한 기능과 수정 사항이 추가되었습니다.
- Java SE 6 및 SE 7
- java.time 기능의 대부분은 ThreeTen-Backport의 Java 6 및 7로 백 포트됩니다 .
- 기계적 인조 인간
- ThreeTenABP의 프로젝트는 적응 ThreeTen – 백 포트 특히 안드로이드에 대한 (위에서 언급).
- ThreeTenABP 사용 방법…을 참조하십시오 .
ThreeTen – 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 java.time에 향후 추가 될 수있는 가능성을 입증하는 근거입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval
, YearWeek
, YearQuarter
, 그리고 더 .
답변
코드 아래에서 간단하게 사용할 수 있습니다.
final Date todayDate = new Date();
System.out.println(todayDate);
System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(todayDate));
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(todayDate));
System.out.println(todayDate);
답변
일, 월, 연도를 가져 와서 연결하거나 아래에 주어진 MM-dd-yyyy 형식을 사용할 수 있습니다.
Date date1 = new Date();
String mmddyyyy1 = new SimpleDateFormat("MM-dd-yyyy").format(date1);
System.out.println("Formatted Date 1: " + mmddyyyy1);
Date date2 = new Date();
Calendar calendar1 = new GregorianCalendar();
calendar1.setTime(date2);
int day1 = calendar1.get(Calendar.DAY_OF_MONTH);
int month1 = calendar1.get(Calendar.MONTH) + 1; // {0 - 11}
int year1 = calendar1.get(Calendar.YEAR);
String mmddyyyy2 = ((month1<10)?"0"+month1:month1) + "-" + ((day1<10)?"0"+day1:day1) + "-" + (year1);
System.out.println("Formatted Date 2: " + mmddyyyy2);
LocalDateTime ldt1 = LocalDateTime.now();
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("MM-dd-yyyy");
String mmddyyyy3 = ldt1.format(format1);
System.out.println("Formatted Date 3: " + mmddyyyy3);
LocalDateTime ldt2 = LocalDateTime.now();
int day2 = ldt2.getDayOfMonth();
int mont2= ldt2.getMonthValue();
int year2= ldt2.getYear();
String mmddyyyy4 = ((mont2<10)?"0"+mont2:mont2) + "-" + ((day2<10)?"0"+day2:day2) + "-" + (year2);
System.out.println("Formatted Date 4: " + mmddyyyy4);
LocalDateTime ldt3 = LocalDateTime.of(2020, 6, 11, 14, 30); // int year, int month, int dayOfMonth, int hour, int minute
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("MM-dd-yyyy");
String mmddyyyy5 = ldt3.format(format2);
System.out.println("Formatted Date 5: " + mmddyyyy5);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(new Date());
int day3 = calendar2.get(Calendar.DAY_OF_MONTH); // OR Calendar.DATE
int month3= calendar2.get(Calendar.MONTH) + 1;
int year3 = calendar2.get(Calendar.YEAR);
String mmddyyyy6 = ((month3<10)?"0"+month3:month3) + "-" + ((day3<10)?"0"+day3:day3) + "-" + (year3);
System.out.println("Formatted Date 6: " + mmddyyyy6);
Date date3 = new Date();
LocalDate ld1 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date3)); // Accepts only yyyy-MM-dd
int day4 = ld1.getDayOfMonth();
int month4= ld1.getMonthValue();
int year4 = ld1.getYear();
String mmddyyyy7 = ((month4<10)?"0"+month4:month4) + "-" + ((day4<10)?"0"+day4:day4) + "-" + (year4);
System.out.println("Formatted Date 7: " + mmddyyyy7);
Date date4 = new Date();
int day5 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getDayOfMonth();
int month5 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getMonthValue();
int year5 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getYear();
String mmddyyyy8 = ((month5<10)?"0"+month5:month5) + "-" + ((day5<10)?"0"+day5:day5) + "-" + (year5);
System.out.println("Formatted Date 8: " + mmddyyyy8);
Date date5 = new Date();
int day6 = Integer.parseInt(new SimpleDateFormat("dd").format(date5));
int month6 = Integer.parseInt(new SimpleDateFormat("MM").format(date5));
int year6 = Integer.parseInt(new SimpleDateFormat("yyyy").format(date5));
String mmddyyyy9 = ((month6<10)?"0"+month6:month6) + "-" + ((day6<10)?"0"+day6:day6) + "-" + (year6);`enter code here`
System.out.println("Formatted Date 9: " + mmddyyyy9);
답변
작은 “mm”월을 대문자 “MM”으로 변경하십시오. 아래는 샘플 코드입니다.
Date myDate = new Date();
SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy");
String strDate = sm.format(myDate);
Date dt = sm.parse(strDate);
System.out.println(strDate);