programing

Java 문자열에서 날짜 변환

javaba 2022. 8. 3. 22:49
반응형

Java 문자열에서 날짜 변환

이 가장 좋을까요?String 2일"에서 "2010년 1월 2일"Date★★★★★★★★★★★★★★★★★?

최종적으로 월, 일, 년을 정수로 구분하여

Date date = new Date();
date.setMonth()..
date.setYear()..
date.setDay()..
date.setlong currentTime = date.getTime();

날짜를 시간으로 변환합니다.

방법이고, 그 방법, 그 방법.java.util.Datesetter Java 1.1(1997년)입니다.java.util.Date가 폐지되었습니다되지 않습니다).java.timeJava 8 † API (2014)

입력 문자열과 일치하는 패턴을 사용하여 날짜 형식을 지정하기만 하면 됩니다(자습서는 여기에서 참조할 수 있습니다).

입력 문자열로서 「2010년 1월 2일」의 특정의 경우는,

  1. ' '1월'을 MMMM을 뜨다
  2. 는 월의 이므로 "2"를 합니다.d턴입니니다다
  3. 2010이므로 '2010'을 합니다.yyyy턴입니니다다
String string = "January 2, 2010";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date); // 2010-01-02

주의: 포맷 패턴에 시간 부분도 포함되어 있는 경우는 대신 을 사용하십시오.또한 포맷 패턴에 시간대가 포함되어 있는 경우는 대신 을 사용하십시오.

다음은 사용 가능한 모든 형식 패턴을 나열한 javadoc의 관련성 발췌입니다.

기호. 의미. 발표
G 시대 본문 AD; Anno Dominoini; A
u 연도 연도 2004; 04
y 연배의 연도 2004; 04
D 연중 번호 189
M/L 1년 중 한 달 번호/텍스트 7; 07; 7월; 7월; J
d 요일제 번호 10
Q/q 사분기의 번호/텍스트 3분기, 03분기, 3분기
Y 주별의 연도 1996; 96
w 주별의 번호 27
W 월별 번호 4
E 요일제 본문 화요일t
e/c 국소적인 요일 번호/텍스트 2; 02; 화요일;t
F 월별 번호 3
a 하루 중 am-pm-of-day 본문 PM
h clock-hour-of-pm (1 ~12) 번호 12
K 오전 1시 (0-11) 번호 0
k clock-hour-of-pm (1 ~24) 번호 0
H 시간(0~23) 번호 0
m 시시각각의 번호 30
s 2분간의 번호 55
S 몇 분의 1초의 프랙션 978
A 밀리 오브 데이 번호 1234
n 나노초의 번호 987654321
N 나노 데이 번호 1234000000
V 시간대 ID 존 ID 미국/로스_엔젤레스; Z; -08:30
z 시간대명 존명 태평양 표준시(PST)
O 국부적 존 매칭 오프셋 O GMT+8; GMT+08:00; UTC-08:00;
X 0에 대한 존 오프셋 'Z' 오프셋 X Z; -08; -0830; -08:30; -083015; -08:30:15;
x 구역 변경 오프셋 x +0000; -08; -0830; -08:30; -083015; -08:30:15;
Z 구역 변경 오프셋 Z +0000; -0800; -08:00;

더 자주 사용되는 패턴에 대해 미리 정의된 포맷터가 몇 개 있습니다.그래서 예를 들면, DateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH); , 을 사용하면 .DateTimeFormatter.RFC_1123_DATE_TIME한 일입니다.것은 、 로로로SimpleDateFormat safe , , , , , , , , , , , , , , , , , , .따라서 필요에 따라 자신의 것을 정의할 수도 있습니다.

입력 형식에 인 입력 문자열 형식을 DateTimeFormatter: 2016-09-26T17:44:57Z와 같은 표준 ISO 8601 날짜는 이미 포메터를 사용하므로 직접 구문 분석할 수 있습니다.마찬가지로 는 시간 컴포넌트가 없는ISO 날짜를 해석하고( 참조), 오프셋과 타임존이 추가된ISO 날짜를 해석합니다( 참조).


자바 8 이전

아직 않았거나 8을 사용하도록 java.util.Date입력 문자열과 일치하는 형식 패턴을 사용하여 날짜를 포맷합니다.

String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010

인 「」의 해 주세요.Locale논쟁.생략하면 입력 문자열의 월 이름에 사용되는 영어일 필요는 없는 기본 로케일이 사용됩니다.로케일이 입력 스트링과 일치하지 않는 경우는, 혼란스럽게 표시됩니다.java.text.ParseException포맷 패턴이 유효하다고 생각되는 경우에도 마찬가지입니다.

다음은 사용 가능한 모든 형식 패턴을 나열한 javadoc의 관련성 발췌입니다.

편지 날짜 또는 시간 구성 요소 발표
G 시대 지정자 본문 AD
y 연도 연도 1996; 96
Y 주년 연도 2009; 09
M/L 년 중 월 7월, 7월, 07년
w 년의 주 번호 27
W 주/월 번호 2
D 일 년 중 일 번호 189
d 요일 번호 10
F 요일월 번호 2
E 요일제 본문 화요일화요일
u 요일수 번호 1
a 오전/오후 마커 본문 PM
H 1일 중 시간(0-23) 번호 0
k 1일 중 시간(1~24 시간) 번호 24
K 오전/오후(0-11) 번호 0
h 오전/오후(1~12시) 번호 12
m 분(시) 번호 30
s 초인분 번호 55
S 밀리초 번호 978
z 시간대 일반 시간대 태평양 표준시; PST; GMT-08:00
Z 시간대 RFC 822 시간대 -0800
X 시간대 ISO 8601 표준시 -08; -0800; -08:00

패턴은 대소문자를 구분하고 4자 이상의 텍스트 기반 패턴은 완전한 형식을 나타냅니다.그렇지 않은 경우 짧은 형식 또는 축약 형식이 사용됩니다.★★★★★★★★★★★★★★★★★,MMMMM을 사용하다

가 몇 가지 .SimpleDateFormat「 」 「 」 、 「 」

입력 문자열 양식
2001.07.04 AD 12:08:56 PDT yyyy.MM.dd G 'at' HH:mm:ss z
2001년 7월 4일 수요일 EEE, MMM d, ''yy
낮 12시 8분 h:mm a
태평양 서머타임 오후 12시 hh 'o''clock' a, zzzz
0:08 PM, PDT K:mm a, z
02001.04 AD 12:08 PM yyyyy.MMMM.dd GGG hh:mm aaa
2001년 7월 4일 (수) 12:08:56 - 0700 EEE, d MMM yyyy HH:mm:ss Z
010704120856-0700 yyMMddHHmmssZ
2001-07-04T12:08:56.235-0700 yyyy-MM-dd'T'HH:mm:ss.SSSZ
2001-07-04T12:08:56.235-07:00 yyyy-MM-dd'T'HH:mm:ss.SSSXXX
2001-W27-3 YYYY-'W'ww-u

은 '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아!SimpleDateFormat스레드 세이프가 아닙니다.즉, 정적 변수 또는 인스턴스 변수로 선언하고 할당한 후 다른 메서드/스레드에서 재사용하지 마십시오.항상 메서드 로컬 범위 내에서 완전히 새로 생성해야 합니다.

아, 네, Java Date에 대한 토론이 또 있습니다.날짜 조작을 처리하기 위해 날짜, 달력, 그레고리 달력SimpleDateFormat사용합니다.예를 들어 1월 날짜를 입력으로 사용합니다.

Calendar mydate = new GregorianCalendar();
String mystring = "January 2, 2010";
Date thedate = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(mystring);
mydate.setTime(thedate);
//breakdown
System.out.println("mydate -> "+mydate);
System.out.println("year   -> "+mydate.get(Calendar.YEAR));
System.out.println("month  -> "+mydate.get(Calendar.MONTH));
System.out.println("dom    -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow    -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour   -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli  -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm   -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod    -> "+mydate.get(Calendar.HOUR_OF_DAY));

그런 다음 다음과 같은 방법으로 조작할 수 있습니다.

Calendar now = Calendar.getInstance();
mydate.set(Calendar.YEAR,2009);
mydate.set(Calendar.MONTH,Calendar.FEBRUARY);
mydate.set(Calendar.DAY_OF_MONTH,25);
mydate.set(Calendar.HOUR_OF_DAY,now.get(Calendar.HOUR_OF_DAY));
mydate.set(Calendar.MINUTE,now.get(Calendar.MINUTE));
mydate.set(Calendar.SECOND,now.get(Calendar.SECOND));
// or with one statement
//mydate.set(2009, Calendar.FEBRUARY, 25, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
System.out.println("mydate -> "+mydate);
System.out.println("year   -> "+mydate.get(Calendar.YEAR));
System.out.println("month  -> "+mydate.get(Calendar.MONTH));
System.out.println("dom    -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow    -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour   -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli  -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm   -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod    -> "+mydate.get(Calendar.HOUR_OF_DAY));
String str_date = "11-June-07";
DateFormat formatter = new SimpleDateFormat("dd-MMM-yy");
Date date = formatter.parse(str_date);

Java 8에서는 새로운 Date/Time API(JSR 310)를 이용할 수 있습니다.

Joda-Time에 의존하지 않고 Java 8의 날짜를 해석하려면 다음 방법을 사용할 수 있습니다.

 String str = "January 2nd, 2010";

// if we 2nd even we have changed in pattern also it is not working please workout with 2nd 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM Q, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(str, formatter);

// access date fields
int year = date.getYear(); // 2010
int day = date.getDayOfMonth(); // 2
Month month = date.getMonth(); // JANUARY
int monthAsInt = month.getValue(); // 1

LocalDate는 날짜(시간 없음)를 나타내기 위한 표준 Java 8 클래스입니다.날짜 및 시간 정보를 포함하는 값을 해석하려면 LocalDateTime을 사용해야 합니다.타임존 값이 있는 경우 ZonedDateTime을 사용합니다.둘 다parse() LocalDate:

LocalDateTime dateWithTime = LocalDateTime.parse(strWithDateAndTime, dateTimeFormatter);
ZonedDateTime zoned = ZonedDateTime.parse(strWithTimeZone, zoneFormatter);

DateTimeFormatter Javadoc 문자 목록 서식:

All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. 
The following pattern letters are defined:

Symbol  Meaning                     Presentation      Examples
------  -------                     ------------      -------
 G       era                         text              AD; Anno Domini; A
 u       year                        year              2004; 04
 y       year-of-era                 year              2004; 04
 D       day-of-year                 number            189
 M/L     month-of-year               number/text       7; 07; Jul; July; J
 d       day-of-month                number            10

 Q/q     quarter-of-year             number/text       3; 03; Q3; 3rd quarter
 Y       week-based-year             year              1996; 96
 w       week-of-week-based-year     number            27
 W       week-of-month               number            4
 E       day-of-week                 text              Tue; Tuesday; T
 e/c     localized day-of-week       number/text       2; 02; Tue; Tuesday; T
 F       week-of-month               number            3

 a       am-pm-of-day                text              PM
 h       clock-hour-of-am-pm (1-12)  number            12
 K       hour-of-am-pm (0-11)        number            0
 k       clock-hour-of-am-pm (1-24)  number            0

 H       hour-of-day (0-23)          number            0
 m       minute-of-hour              number            30
 s       second-of-minute            number            55
 S       fraction-of-second          fraction          978
 A       milli-of-day                number            1234
 n       nano-of-second              number            987654321
 N       nano-of-day                 number            1234000000

 V       time-zone ID                zone-id           America/Los_Angeles; Z; -08:30
 z       time-zone name              zone-name         Pacific Standard Time; PST
 O       localized zone-offset       offset-O          GMT+8; GMT+08:00; UTC-08:00;
 X       zone-offset 'Z' for zero    offset-X          Z; -08; -0830; -08:30; -083015; -08:30:15;
 x       zone-offset                 offset-x          +0000; -08; -0830; -08:30; -083015; -08:30:15;
 Z       zone-offset                 offset-Z          +0000; -0800; -08:00;

기술적으로 맞는 답변도 있지만 권장할 만한 답변은 아닙니다.

  • java.util.util.Date & Calendar 。설계 및 구현에 결함이 있으므로 피하십시오.다행히 다른 두 가지 우수한 날짜 라이브러리 중에서 선택할 수 있습니다.
    • 다 타임
      이 인기 있는 오픈 소스 무료 라이브러리는 여러 버전의 Java에서 사용할 수 있습니다.Stack Overflow 에그 。이것들 중 몇 가지를 읽으면 빠르게 정보를 얻는 데 도움이 될 것입니다.
    • time.disc.time.* ★★★
      이 새로운 클래스 세트는 Joda-Time에서 영감을 받아 JSR 310에서 정의되었습니다.자바8.이러한 클래스를 Java 7로 백포팅하는 프로젝트가 진행 중이지만, 이 백포팅은 Oracle에서 지원되지 않습니다.
  • Kristopher Johnson이 이 질문에 대한 코멘트에서 올바르게 언급했듯이, 다른 답변은 다음과 같은 중요한 문제를 무시합니다.
    • of Day)
      날짜에는 날짜 부분과 시간 부분이 모두 있습니다.

    • 하루의 시작은 시간대에 따라 달라집니다.표준 시간대를 지정하지 않으면 JVM의 기본 표준 시간대가 적용됩니다.즉, 다른 컴퓨터에서 실행하거나 변경된 표준 시간대 설정을 사용하면 코드 동작이 변경될 수 있습니다.마마 、 네하하원원거 。

    • 로케일의 언어는 해석 중에 발견된 단어(월 및 날짜 이름)를 해석하는 방법을 지정합니다(BalusC의 답변에 따라 적절하게 처리됩니다).또한 Locale은 날짜 시간의 문자열 표현을 생성할 때 일부 포메터의 출력에 영향을 줍니다.

조다 타임

다음은 Joda-Time에 대한 몇 가지 메모입니다.

시간대

Joda-Time에서는 DateTime 객체는 할당된 자신의 시간대를 실제로 알고 있습니다.이는 java.util과 대조됩니다.표준 시간대가 있는 것처럼 보이지만 없는 날짜 클래스.

다음 코드 예에서는 문자열을 해석하는 포맷터에 시간대 개체를 전달하는 방법을 설명합니다.이 시간대는 해당 날짜 시간이 해당 시간대에서 발생한 것으로 해석하기 위해 사용됩니다.따라서 해당 문자열 입력으로 나타나는 시간대를 고려하여 결정해야 합니다.

입력 문자열에 시간 부분이 없기 때문에 Joda-Time은 지정된 시간대의 첫 번째 모멘트를 시각으로 할당합니다.은 ""를 의미합니다.00:00:00하지만 항상 그렇지는 않습니다.Daylight Saving Time(DST; 여름 시간)이나 기타 이상 현상이 원인입니다.덧붙여서, DateTime 인스턴스를 호출하여 동일한 작업을 수행할 수 있습니다.withTimeAtStartOfDay.

포메터 패턴

포메터의 패턴에 사용되는 문자는 joda-Time에서 java.util에서 사용되는 문자와 유사합니다.날짜/달력은 동일하지 않습니다.문서를 주의 깊게 읽습니다.

불변성

조다 타임기존 Date-Time 개체를 수정하는 것이 아니라 변경이 필요한 경우를 제외하고 대부분의 측면이 복사된 다른 개체를 기반으로 새로운 인스턴스를 작성하는 메서드를 호출합니다.를 들면, 「네, 네, 네, 네, 네, 네, 네, 네, 네, 네, 네, 네, 네, 네.withZone아래 마지막 줄에 있습니다.불변성은 Joda-Time을 스레드 세이프하게 만드는 데 도움이 되며 일부 작업을 보다 명확하게 할 수 있습니다.

변환

java.util이 필요합니다.Joda-Time 개체를 모르는 다른 클래스/프레임워크에서 사용할 날짜 개체입니다.다행히 앞뒤로 움직이기가 매우 쉽다.

java.util에서 온 입니다. 객체서는 「」( 「」)dateJoda-Time ★★★★★★★★★★★★★★★★★★★…

org.joda.time.DateTime dateTime = new DateTime( date, timeZone );

Joda-Time에서 java.util로 다른 방향으로 이동합니다.날짜 개체...

java.util.Date date = dateTime.toDate();

샘플 코드

String input = "January 2, 2010";

java.util.Locale locale = java.util.Locale.US;
DateTimeZone timeZone = DateTimeZone.forID( "Pacific/Honolulu" ); // Arbitrarily chosen for example.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "MMMM d, yyyy" ).withZone( timeZone ).withLocale( locale );
DateTime dateTime = formatter.parseDateTime( input );

System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTime in UTC/GMT: " + dateTime.withZone( DateTimeZone.UTC ) );

실행 시...

dateTime: 2010-01-02T00:00:00.000-10:00
dateTime in UTC/GMT: 2010-01-02T10:00:00.000Z
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {
    date = dateFormat.parse("2013-12-4");
    System.out.println(date.toString()); // Wed Dec 04 00:00:00 CST 2013

    String output = dateFormat.format(date);
    System.out.println(output); // 2013-12-04
} 
catch (ParseException e) {
    e.printStackTrace();
}

난 괜찮아.

SimpleDateFormat 클래스를 다룰 때는 Date가 스레드 세이프가 아니며 단일 Date 개체를 여러 스레드와 공유할 수 없다는 점을 기억해야 합니다.

또한 "m"과 "M"은 작은 대소문자를 분 단위로 사용하고 대소문자를 월 단위로 사용하는 것과 큰 차이가 있습니다."d"와 "D"도 마찬가지입니다.이로 인해 종종 간과되는 미묘한 버그가 발생할 수 있습니다.자세한 내용은 Javadoc 또는 Java에서 문자열최신 상태로 변환하는 가이드를 참조하십시오.

SimpleDateformat을 사용하여 현재까지의 문자열을 변경할 수 있습니다.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = "2000-01-01";
Date date = sdf.parse(strDate);

지금까지 사용한 간단한 두 가지 포맷:

  1. 어떤 포맷 날짜를 원하십니까?
  2. 실제로 존재하는 형식 날짜는 무엇입니까?

완전한 날짜-시간 형식을 해석합니다.

date="2016-05-06 16:40:32";

public static String setDateParsing(String date) throws ParseException {

    // This is the format date we want
    DateFormat mSDF = new SimpleDateFormat("hh:mm a");

    // This format date is actually present
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd hh:mm");
    return mSDF.format(formatter.parse(date));
}

또한 GWT와 같은 일부 클라이언트 측 기술에서는 SimpleDateFormat을 사용할 수 없습니다.

Calendar.getInstance()를 선택하는 것이 좋습니다.요건은 두 날짜를 비교하는 것입니다.오래된 날짜입니다.

나의 초라한 시험 프로그램.포맷이나 로그 파일에 있는 긴 날짜를 조회할 때 사용합니다(누가 저장했는지...).

내 테스트 프로그램:

package be.test.package.time;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

public class TimeWork {

    public static void main(String[] args) {    

        TimeZone timezone = TimeZone.getTimeZone("UTC");

        List<Long> longs = new ArrayList<>();
        List<String> strings = new ArrayList<>();

        //Formatting a date needs a timezone - otherwise the date get formatted to your system time zone.
        //Use 24h format HH. In 12h format hh can be in range 0-11, which makes 12 overflow to 0.
        DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss.SSS");
        formatter.setTimeZone(timezone);

        Date now = new Date();

        //Test dates
        strings.add(formatter.format(now));
        strings.add("01-01-1970 00:00:00.000");
        strings.add("01-01-1970 00:00:01.000");
        strings.add("01-01-1970 00:01:00.000");
        strings.add("01-01-1970 01:00:00.000");
        strings.add("01-01-1970 10:00:00.000");
        strings.add("01-01-1970 12:00:00.000");
        strings.add("01-01-1970 24:00:00.000");
        strings.add("02-01-1970 00:00:00.000");
        strings.add("01-01-1971 00:00:00.000");
        strings.add("01-01-2014 00:00:00.000");
        strings.add("31-12-1969 23:59:59.000");
        strings.add("31-12-1969 23:59:00.000");
        strings.add("31-12-1969 23:00:00.000");

        //Test data
        longs.add(now.getTime());
        longs.add(-1L);
        longs.add(0L); //Long date presentation at - midnight 1/1/1970 UTC - The timezone is important!
        longs.add(1L);
        longs.add(1000L);
        longs.add(60000L);
        longs.add(3600000L);
        longs.add(36000000L);
        longs.add(43200000L);
        longs.add(86400000L);
        longs.add(31536000000L);
        longs.add(1388534400000L);
        longs.add(7260000L);
        longs.add(1417706084037L);
        longs.add(-7260000L);

        System.out.println("===== String to long =====");

        //Show the long value of the date
        for (String string: strings) {
            try {
                Date date = formatter.parse(string);
                System.out.println("Formated date : " + string + " = Long = " + date.getTime());
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

        System.out.println("===== Long to String =====");

        //Show the date behind the long
        for (Long lo : longs) {
            Date date = new Date(lo);
            String string = formatter.format(date);
            System.out.println("Formated date : " + string + " = Long = " + lo);        
        }
    }
}

테스트 결과:

===== String to long =====
Formated date : 05-12-2014 10:17:34.873 = Long = 1417774654873
Formated date : 01-01-1970 00:00:00.000 = Long = 0
Formated date : 01-01-1970 00:00:01.000 = Long = 1000
Formated date : 01-01-1970 00:01:00.000 = Long = 60000
Formated date : 01-01-1970 01:00:00.000 = Long = 3600000
Formated date : 01-01-1970 10:00:00.000 = Long = 36000000
Formated date : 01-01-1970 12:00:00.000 = Long = 43200000
Formated date : 01-01-1970 24:00:00.000 = Long = 86400000
Formated date : 02-01-1970 00:00:00.000 = Long = 86400000
Formated date : 01-01-1971 00:00:00.000 = Long = 31536000000
Formated date : 01-01-2014 00:00:00.000 = Long = 1388534400000
Formated date : 31-12-1969 23:59:59.000 = Long = -1000
Formated date : 31-12-1969 23:59:00.000 = Long = -60000
Formated date : 31-12-1969 23:00:00.000 = Long = -3600000
===== Long to String =====
Formated date : 05-12-2014 10:17:34.873 = Long = 1417774654873
Formated date : 31-12-1969 23:59:59.999 = Long = -1
Formated date : 01-01-1970 00:00:00.000 = Long = 0
Formated date : 01-01-1970 00:00:00.001 = Long = 1
Formated date : 01-01-1970 00:00:01.000 = Long = 1000
Formated date : 01-01-1970 00:01:00.000 = Long = 60000
Formated date : 01-01-1970 01:00:00.000 = Long = 3600000
Formated date : 01-01-1970 10:00:00.000 = Long = 36000000
Formated date : 01-01-1970 12:00:00.000 = Long = 43200000
Formated date : 02-01-1970 00:00:00.000 = Long = 86400000
Formated date : 01-01-1971 00:00:00.000 = Long = 31536000000
Formated date : 01-01-2014 00:00:00.000 = Long = 1388534400000
Formated date : 01-01-1970 02:01:00.000 = Long = 7260000
Formated date : 04-12-2014 15:14:44.037 = Long = 1417706084037
Formated date : 31-12-1969 21:59:00.000 = Long = -7260000

소스 링크

Android용

Calendar.getInstance().getTime()은 다음과 같이 지정합니다.

Thu Jul 26 15:54:13 GMT+05:30 2018

사용하다

String oldDate = "Thu Jul 26 15:54:13 GMT+05:30 2018";
DateFormat format = new SimpleDateFormat("EEE LLL dd HH:mm:ss Z yyyy");
Date updateLast = format.parse(oldDate);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
  Date date1 = null;
  Date date2 = null;

  try {
    date1 = dateFormat.parse(t1);
    date2 = dateFormat.parse(t2);
  } catch (ParseException e) {
    e.printStackTrace();
  }
  DateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
  String StDate = formatter.format(date1);
  String edDate = formatter.format(date2);

  System.out.println("ST  "+ StDate);
  System.out.println("ED "+ edDate);
From Date to String
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
return sdf.format(date);
From String to Date
SimpleDateFormat sdf = new SimpleDateFormat(datePattern); 
return sdf.parse(dateStr);
From date String to different format
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat newSdf = new SimpleDateFormat("dd-MM-yyyy");
Date temp = sdf.parse(dateStr);
return newSdf.format(temp);

소스 링크

String을 LocalDateTime으로 해석하는 작업을 했습니다.예를 들어 여기에 남겨두겠습니다.

LocalDateTime d = LocalDateTime.parse("20180805 101010", DateTimeFormatter.ofPattern("yyyyMMdd HHmmss"));

그리고 나는

문자열에서 날짜로 변환:

private Date StringtoDate(String date) throws Exception {
            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
            java.sql.Date sqlDate = null;
            if( !date.isEmpty()) {

                try {
                    java.util.Date normalDate = sdf1.parse(date);
                    sqlDate = new java.sql.Date(normalDate.getTime());
                } catch (ParseException e) {
                    throw new Exception("Not able to Parse the date", e);
                }
            }
            return sqlDate;
        }

이거 드셔보세요

String date = get_pump_data.getString("bond_end_date");
DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date datee = (Date)format.parse(date);

언급URL : https://stackoverflow.com/questions/4216745/java-string-to-date-conversion

반응형