سلسلة Java حتى الآن تحويل
-
26-09-2019 - |
سؤال
ما هي أفضل طريقة لتحويل ملف String
في التنسيق "2 يناير 2010" إلى أ Date
في جافا؟
في نهاية المطاف ، أريد أن أخرج الشهر واليوم والسنة كمناسبين حتى أتمكن من استخدام
Date date = new Date();
date.setMonth()..
date.setYear()..
date.setDay()..
date.setlong currentTime = date.getTime();
لتحويل التاريخ إلى الوقت.
المحلول
هذه هي الطريقة الصعبة ، وتلك java.util.Date
تم إهمال طرق Setter منذ Java 1.1 (1997). ببساطة تنسيق التاريخ باستخدام SimpleDateFormat
باستخدام نمط تنسيق يطابق سلسلة الإدخال.
في حالتك المحددة من "2 يناير 2010" كسلسلة الإدخال:
- "يناير" هو شهر النص الكامل ، لذا استخدم
MMMM
نمط لذلك - "2" هو يوم الشهر القصير ، لذلك استخدم
d
نمط لذلك. - "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
على الرغم من أن نمط التنسيق يبدو صالحًا.
إليك مقتطف من الأهمية من جافادوك, ، سرد جميع أنماط التنسيق المتاحة:
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
لاحظ أن الأنماط حساسة للحالة وأن الأنماط القائمة على النص لأربعة أحرف أو أكثر تمثل النموذج الكامل ؛ وإلا يتم استخدام نموذج قصير أو مختصر إذا كان متاحًا. على سبيل المثال 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
ملاحظة مهمة هي ذلك SimpleDateFormat
هو ليس موضوع آمن. بمعنى آخر ، يجب ألا تعلن أبدًا وتعيينه كمتغير ثابت أو مثيل ثم إعادة استخدامه من طرق/مؤشرات ترابط مختلفة. يجب عليك دائمًا إنشاء علامة تجارية جديدة ضمن النطاق المحلي للأسلوب.
تحديث Java 8
إذا كنت على جافا 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)
في حين أن.
إليك مقتطف من الأهمية من جافادوك, ، سرد جميع أنماط التنسيق المتاحة:
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
: معيار ISO 8601 التاريخ ، مثل 2016-09-26T17: 44: 57Z ، يمكن تحليلها مباشرة مع LocalDateTime#parse(text)
لأنه يستخدم بالفعل ISO_LOCAL_DATE_TIME
التنسيق. بصورة مماثلة، LocalDate#parse(text)
يمتلك تاريخ ISO بدون مكون الوقت (انظر ISO_LOCAL_DATE
)، و ZonedDateTime#parse(text)
يمتلك تاريخ ISO مع الإزاحة وإضافة منطقة زمنية (انظر ISO_ZONED_DATE_TIME
).
نصائح أخرى
آه نعم مناقشة تاريخ جافا ، مرة أخرى. للتعامل مع معالجة التاريخ التي نستخدمها تاريخ, تقويم, التقويم الميلادي, ، و SimpleDateFormat. على سبيل المثال باستخدام تاريخ يناير الخاص بك كمدخلات:
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;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = formatter.parse(str_date);
مع Java 8 نحصل على تاريخ / وقت جديد (API) (JSR 310).
يمكن استخدام الطريقة التالية لتحليل التاريخ في 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
محلي هي فئة Java 8 القياسية لتمثيل تاريخ (بدون وقت). إذا كنت ترغب في تحليل القيم التي تحتوي على معلومات تاريخ ووقت يجب أن تستخدمها محلي. للقيم مع استخدام المناطق الزمنية 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.date & Calendar مزعجة للغاية. بسبب العيوب في التصميم والتنفيذ ، تجنبها. لحسن الحظ ، لدينا اختيارنا لمكتبتين آخرتين في وقت التاريخ:
- وقت جودا
يمكن استخدام هذه المكتبة الشهيرة المفتوحة المصدر المجانية للتكلفة عبر عدة إصدارات من Java. يمكن العثور على العديد من الأمثلة على استخدامه على Stackoverflow. إن قراءة بعض هذه الأشياء ستساعدك في الحصول على السرعة بسرعة. - java.time.* حزمة
هذه المجموعة الجديدة من الفصول مستوحاة من Joda-time وتحديدها من قبل JSR 310. هذه الفصول مدمجة في Java 8. يجري المشروع جارية لعملية خلفية هذه الفصول إلى Java 7 ، ولكن هذا الخلفية لا يتم دعمها بواسطة Oracle.
- وقت جودا
- كما لاحظت كريستوفر جونسون بشكل صحيح في تعليقه على السؤال ، فإن الإجابات الأخرى تتجاهل القضايا الحيوية المتمثلة في:
- وقت اليوم
التاريخ يحتوي على جزء من تاريخ وجزء من وقت اليوم) - وحدة زمنية
بداية اليوم تعتمد على المنطقة الزمنية. إذا فشلت في تحديد منطقة زمنية ، يتم تطبيق المنطقة الزمنية الافتراضية لـ JVM. هذا يعني أن سلوك الكود الخاص بك قد يتغير عند التشغيل على أجهزة الكمبيوتر الأخرى أو مع إعداد منطقة زمنية معدلة. ربما ليس ما انت تريد. - لغة
تحدد لغة اللغة كيفية تفسير الكلمات (اسم الشهر واليوم) التي تمت مواجهتها أثناء التحليل. (ال الجواب من balusc يعالج هذا بشكل صحيح.) أيضًا ، تؤثر اللغة على إخراج بعض التنسيقات عند إنشاء تمثيل سلسلة في وقت التاريخ.
- وقت اليوم
وقت جودا
بعض الملاحظات حول جودا وقت متابعة.
وحدة زمنية
في وقت جودا, ، أ DateTime الكائن يعرف حقًا المنطقة الزمنية المخصصة الخاصة به. هذا يتناقض مع فئة java.util.date التي يبدو للحصول على منطقة زمنية ولكن لا.
لاحظ في رمز المثال أدناه كيف نمرر كائن المنطقة الزمنية إلى التنسيق الذي يحلل السلسلة. يتم استخدام تلك المنطقة الزمنية لتفسير ذلك الوقت على أنه حدث في تلك المنطقة الزمنية. لذلك تحتاج إلى التفكير في المنطقة الزمنية وتحديدها التي تمثلها إدخال السلسلة هذه.
نظرًا لعدم وجود جزء زمني في سلسلة الإدخال الخاصة بك ، يعين Joda-time اللحظة الأولى من يوم المنطقة الزمنية المحددة كوقت اليوم. عادة هذا يعني 00:00:00
ولكن ليس دائما بسبب وقت توفير النهار (DST) أو غيرها من الحالات الشاذة. بالمناسبة ، يمكنك أن تفعل الشيء نفسه مع أي مثيل لوقت البيانات عن طريق الاتصال withTimeAtStartOfDay
.
نمط التنسيق
تتشابه الأحرف المستخدمة في نمط Formatter في وقت Joda مع تلك الموجودة في Java.Util.date/calendar ولكن ليس بالضبط. اقرأ بعناية المستند.
ثبات
نستخدم عادة الفصول غير القابلة للتغيير في وقت جودا. بدلاً من تعديل كائن تاريخ موجود ، ندعو الطرق التي تنشئ مثيلًا جديدًا جديدًا استنادًا إلى الكائن الآخر مع نسخ معظم الجوانب إلا في حالة رغبة التعديلات. مثال على ذلك withZone
في السطر الأخير أدناه. ثبات يساعد على جعل Joda-Time آمنًا جدًا لخيط الخيط ، ويمكن أن يجعل بعض العمل أكثر وضوحًا.
تحويلات
ستحتاج إلى java.util.date كائنات للاستخدام مع فئات/إطار عمل آخر لا يعرفون عن كائنات Joda-time. لحسن الحظ ، من السهل جدًا التحرك ذهابًا وإيابًا.
الانتقال من كائن java.util.date (المسمى هنا date
) إلى Joda-Time DateTime ...
org.joda.time.DateTime dateTime = new DateTime( date, timeZone );
الذهاب في الاتجاه الآخر من وقت Joda إلى 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
أثناء التعامل مع فئة SimpledAteFormat ، من المهم أن نتذكر أن التاريخ ليس آمنًا لخيط الخيط ولا يمكنك مشاركة كائن تاريخ واحد مع مؤشرات ترابط متعددة.
كما يوجد فرق كبير بين "M" و "M" حيث يتم استخدام حالة صغيرة لدقائق ويتم استخدام حالة رأس المال للشهر. الشيء نفسه مع "D" و "D". هذا يمكن أن يسبب بق الحانات الدقيقة التي غالبا ما يتم تجاهلها. يرى جافادوك أو دليل لتحويل السلسلة حتى الآن في جافا لمزيد من التفاصيل.
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();
}
إنه يعمل بشكل جيد بالنسبة لي.
أيضًا ، غير متوفر مع بعض التقنيات من جانب العميل ، مثل GWT.
من الجيد أن تذهب إلى Calendar.getInstance () ، ومتطلباتك هو مقارنة تاريخين ؛ اذهب لتاريخ طويل.
بسيطة اثنين من التنسيقات التي استخدمناها:
- ما هو تاريخ التنسيق الذي نريده؟
- ما هو تاريخ التنسيق الموجود بالفعل؟
نحن نحلل تنسيق التاريخ الكامل:
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));
}
برنامج الاختبار المتواضع. أستخدمه للعب مع الصيغة والتواريخ الطويلة التي أجده في ملفات السجل (ولكن من وضعها هناك ...).
برنامج الاختبار الخاص بي:
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
يمكنك استخدام SimpleDateFormat لتغيير سلسلة حتى الآن
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = "2000-01-01";
Date date = new Date(sdf.parse(strDate).getTime());
مصدر وصلة
ل ذكري المظهر
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);
جرب هذا
String date = get_pump_data.getString("bond_end_date");
DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date datee = (Date)format.parse(date);