web-dev-qa-db-ja.com

Java文字列から日付への変換

Javaで 'January 2、2010'の形式のStringDateに変換するための最良の方法は何ですか?

最終的に、月、日、年を整数として分割して、使用できるようにします。

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

日付を時間に変換します。

810
littleK

それは難しい方法です、そしてそれらのJava.util.DateセッターメソッドはJava 1.1(1997)以来非推奨です。 入力文字列にマッチするフォーマットパターンを使ってSimpleDateFormatを使って単純に日付をフォーマットします

入力文字列として「2010年1月2日」という特定のケースでは、

  1. "January"は全文月なので、MMMMパターンを使用してください。
  2. "2"は短い月の日なので、dパターンを使用してください。
  3. "2010"は4桁の年なので、yyyyパターンを使用してください。
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 から関連性を抜粋したもので、使用可能なすべてのフォーマットパターンがリストされています。

Letter  Date or Time Component  Presentation        Examples
------  ----------------------  ------------------  -------------------------------------
G       Era designator          Text                AD
y       Year                    Year                1996; 96
Y       Week year               Year                2009; 09
M/L     Month in year           Month               July; Jul; 07
w       Week in year            Number              27
W       Week in month           Number              2
D       Day in year             Number              189
d       Day in month            Number              10
F       Day of week in month    Number              2
E       Day in week             Text                Tuesday; Tue
u       Day number of week      Number              1
a       Am/pm marker            Text                PM
H       Hour in day (0-23)      Number              0
k       Hour in day (1-24)      Number              24
K       Hour in am/pm (0-11)    Number              0
h       Hour in am/pm (1-12)    Number              12
m       Minute in hour          Number              30
s       Second in minute        Number              55
S       Millisecond             Number              978
z       Time zone               General time zone   Pacific Standard Time; PST; GMT-08:00
Z       Time zone               RFC 822 time zone   -0800
X       Time zone               ISO 8601 time zone  -08; -0800; -08:00

パターンでは大文字と小文字が区別され、4文字以上のテキストベースのパターンは完全形式を表します。それ以外の場合は、使用可能であれば短い形式または省略形式が使用されます。だから例えばMMMMM以上は不要です。

これは与えられた文字列を今日までに解析するための有効なSimpleDateFormatパターンのいくつかの例です:

Input string                            Pattern
------------------------------------    ----------------------------
2001.07.04 AD at 12:08:56 PDT           yyyy.MM.dd G 'at' HH:mm:ss z
Wed, Jul 4, '01                         EEE, MMM d, ''yy
12:08 PM                                h:mm a
12 o'clock PM, Pacific Daylight Time    hh 'o''clock' a, zzzz
0:08 PM, PDT                            K:mm a, z
02001.July.04 AD 12:08 PM               yyyyy.MMMM.dd GGG hh:mm aaa
Wed, 4 Jul 2001 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

重要な注意点は、SimpleDateFormatnot thread safeであるということです。つまり、静的変数またはインスタンス変数として宣言して代入してから、異なるメソッドやスレッドから再利用してはいけません。メソッドのローカルスコープ内で常に新しく作成する必要があります。


Java 8アップデート

Java 8以降であれば、 DateTimeFormatter を使用してください(ここでもリンクをクリックすると、すべての定義済みフォーマッタと使用可能なフォーマットパターンが表示されます。 チュートリアルはこちらから入手できます )。この新しいAPIは JodaTime に触発されています。

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

注意:フォーマットパターンに時間部分も含まれている場合は、 LocalDateTime#parse(text, formatter) ではなく LocalDate#parse(text, formatter) を使用してください。そして、あなたのフォーマットパターンにタイムゾーンも含まれている場合は、代わりに ZonedDateTime#parse(text, formatter) を使用してください。

これは javadoc から関連性を抜粋したもので、使用可能なすべてのフォーマットパターンがリストされています。

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;

これにはいくつかの 定義済みフォーマッタがあります より一般的なパターン用です。だから代わりにDateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);、あなたはDateTimeFormatter.RFC_1123_DATE_TIMEを使うことができます。これは可能です。なぜならそれらはSimpleDateFormatとは反対にスレッドセーフだからです。したがって、必要に応じて独自のものを定義することもできます。

特定の入力文字列フォーマットのために、明示的なDateTimeFormatterを使う必要はありません:2016-09-26T17:44:57Zのような標準の ISO 8601 dateは LocalDateTime#parse(text) として直接解析することができますすでに ISO_LOCAL_DATE_TIME フォーマッタを使用しています。同様に、 LocalDate#parse(text) は時間コンポーネントなしでISO日付を解析し( ISO_LOCAL_DATE を参照)、 ZonedDateTime#parse(text) はオフセットとタイムゾーンを追加してISO日付を解析します( ISO_ZONED_DATE_TIME を参照)。

1541
BalusC

ああ、それでもJava Dateの議論です。日付操作を処理するために、 DateCalendarGregorianCalendar 、および 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));
68
pn1 dude
String str_date = "11-June-07";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = formatter.parse(str_date);
43
Ruthreshwar

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 を使用してください。どちらもLocalDateに似たparse()メソッドを提供します。

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;
37
micha

いくつかの答えは技術的には正しいものですが、お勧めできません。

  • Java.util.Date&Calendarクラスは面倒なことで有名です。設計と実装の欠陥のため、それらを避けてください。幸いなことに、他の2つの優れた日時ライブラリを選択できます。
    • Joda-Time
      この人気のあるオープンソースの無料のライブラリは、Javaのいくつかのバージョンで使用できます。その使用法の多くの例がStackOverflowにあります。これらのいくつかを読むことは、あなたがすぐに慣れるのを助けるでしょう。
    • Java.time。*パッケージ
      この新しいクラスのセットはJoda-Timeに触発され、JSR 310によって定義されています。これらのクラスはJava 8.に組み込まれています。これらのクラスをJava 7にバックポートするプロジェクトが進行中ですしかし、そのバックポートはOracleによって支援されていません。
  • クリストファー・ジョンソンが質問についてのコメントで正しく指摘しているように、他の答えは次の重要な問題を無視しています。
    • 時刻
      日付には日付部分と時刻部分の両方があります)
    • タイムゾーン
      1日の始まりはタイムゾーンによって異なります。タイムゾーンの指定に失敗すると、JVMのデフォルトのタイムゾーンが適用されます。つまり、他のコンピューターで実行したり、タイムゾーン設定を変更したりすると、コードの動作が変わる可能性があります。おそらくあなたが望むものではありません。
    • ロケール
      ロケールの言語は、解析中に出会った単語(月と日の名前)の解釈方法を指定します。 ( BalusCによる回答 はこれを適切に処理します。)また、ロケールは、日付時刻の文字列表現を生成するときに、一部のフォーマッタの出力に影響します。

ジョーダタイム

Joda-Timeに関するいくつかの注意事項を次に示します。

タイムゾーン

Joda-Time では、 DateTime オブジェクトは、独自に割り当てられたタイムゾーンを本当に認識しています。これは、msがタイムゾーンを持っているように見えますが、持っていないJava.util.Dateクラスと対照的です。

以下のコード例では、文字列を解析するフォーマッタにタイムゾーンオブジェクトを渡す方法に注意してください。そのタイムゾーンは、その日時がそのタイムゾーンで発生したものとして解釈するために使用されます。そのため、その文字列入力によって表されるタイムゾーンについて考え、決定する必要があります。

入力文字列に時間部分がないため、Joda-Timeは指定されたタイムゾーンの1日の最初の瞬間を時刻として割り当てます。通常、これは00:00:00を意味しますが、 サマータイム(DST) またはその他の異常のため、常にではありません。ちなみに、withTimeAtStartOfDayを呼び出すことで、任意のDateTimeインスタンスに同じことができます。

フォーマッタパターン

フォーマッタのパターンで使用される文字は、Joda-TimeでJava.util.Date/Calendarの文字と似ていますが、まったく同じではありません。ドキュメントを注意深く読んでください。

不変性

通常、Joda-Timeでは不変クラスを使用します。既存のDate-Timeオブジェクトを変更するのではなく、変更が必要な場合を除き、ほとんどの側面がコピーされた他のオブジェクトに基づいて新しい新しいインスタンスを作成するメソッドを呼び出します。例は、最後の行のwithZoneの呼び出しです。 Immutability は、Joda-Timeを非常にスレッドセーフにするのに役立ち、一部の作業をより明確にすることもできます。

変換

Joda-Timeオブジェクトを知らない他のクラス/フレームワークで使用するには、Java.util.Dateオブジェクトが必要です。幸いなことに、前後に移動するのは非常に簡単です。

Java.util.Dateオブジェクト(ここではdateという名前)からJoda-Time DateTimeへ…

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

Joda-TimeからJava.util.Dateオブジェクトへの別の方向へ…

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
25
Basil Bourque

SimpleDateFormatクラスの処理中は、Dateはスレッドセーフではなく、単一のDateオブジェクトを複数のスレッドと共有することはできません。

また、 "m"と "M"の間には大きな違いがあります。小さなケースは分に使用され、大文字のケースは月に使用されます。 "d"および "D"と同じです。これは、見落とされがちな微妙なバグを引き起こす可能性があります。詳細は Javadoc またはJavaで文字列を日付に変換するためのガイドを参照してください。

19
Jim
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();
}

それは私にとってはうまくいきます。

15
Luna Kong

我々が使用した単純な2つのフォーマッタ

  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));
}
6
siddharth patel

また、SimpleDateFormatは、 _ gwt _ などの一部のクライアント側テクノロジでは使用できません。

Calendar.getInstance()を使用することをお勧めします。2つの日付を比較することが要件です。長い間行きなさい。

6

私の謙虚なテストプログラム私はそれを使って、私がログファイルで見つけたフォーマッタと長い検索日を試しています(しかし、誰がそれらをそこに置いたのか...)。

私のテストプログラム:

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
5
Dimitri Dewaele

SimpleDateformatを使って文字列を日付に変更することができます

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

ソース リンク

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);
2
Code Spy