SimpleDateFormat تجاهل الشهر عند التحليل
-
27-09-2019 - |
سؤال
يمنحني الرمز التالي التاريخ المتدرب على أنه "الأربعاء 13 يناير 00:00:00 بتوقيت شرق الولايات المتحدة" بدلاً من "الأربعاء 13 يونيو 00:00:00 بتوقيت شرق الولايات المتحدة 2010". أي أفكار موضع تقدير كبير.
SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss");
String str = "2010-06-13T00:00:00";
Date date = sf.parse(str);
System.out.println(" Date " + date.toString());
المحلول
محاولة:
"yyyy-MM-dd'T'HH:mm:ss"
MM
يعني الشهر. mm
يعني دقائق. انظر الوثائق ل SimpleDateFormat
لمزيد من التفاصيل عن أنماط التاريخ والوقت المدعومة.
نصائح أخرى
المشكلة هي أنك تستخدم "MM" في شهر و "MM" تمثل دقائق. فيما يلي جميع تنسيقات التاريخ المتاحة ، اقرأ المزيد من المستندات هنا.
Symbol Meaning Kind Example
D day in year Number 189
E day of week Text E/EE/EEE:Tue, EEEE:Tuesday, EEEEE:T
F day of week in month Number 2 (2nd Wed in July)
G era designator Text AD
H hour in day (0-23) Number 0
K hour in am/pm (0-11) Number 0
L stand-alone month Text L:1 LL:01 LLL:Jan LLLL:January LLLLL:J
M month in year Text M:1 MM:01 MMM:Jan MMMM:January MMMMM:J
S fractional seconds Number 978
W week in month Number 2
Z time zone (RFC 822) Time Zone Z/ZZ/ZZZ:-0800 ZZZZ:GMT-08:00 ZZZZZ:-08:00
a am/pm marker Text PM
c stand-alone day of week Text c/cc/ccc:Tue, cccc:Tuesday, ccccc:T
d day in month Number 10
h hour in am/pm (1-12) Number 12
k hour in day (1-24) Number 24
m minute in hour Number 30
s second in minute Number 55
w week in year Number 27
G era designator Text AD
y year Number yy:10 y/yyy/yyyy:2010
z time zone Time Zone z/zz/zzz:PST zzzz:Pacific Standard
الجواب الحديث:
String str = "2010-06-13T00:00:00";
LocalDateTime dateTime = LocalDateTime.parse(str);
System.out.println("Date-time " + dateTime);
انتاج:
تاريخ التاريخ 2010-06-13T00: 00
أنا أستخدم وأوصى java.time
, ، تاريخ جافا الحديث والوقت واجهة برمجة التطبيقات. نحن لا نحتاج حتى إلى تنسيق صريح للحلية. هذا لأن سلسلةك بتنسيق ISO 8601 ، المعيار الدولي الذي java.time
تحليل الفصول كما الافتراضي. java.time
خرج في عام 2014.
بينما في عام 2010 عندما تم طرح هذا السؤال ، SimpleDateFormat
كان ما كان لدينا لتواريخ التحليل والأوقات ، ويعتبر هذا الفصل الآن قديمًا ، لحسن الحظ ، لأنه كان مزعجًا أيضًا.
في حالة احتواء السلسلة الخاصة بك فقط تاريخ بدون وقت من اليوم ، استخدم LocalDate
الفصل بنفس الطريقة (تم طلب ذلك في سؤال مكرر).
String dateStr = "2018-05-23";
LocalDate date2 = LocalDate.parse(dateStr);
System.out.println(date2);
2018-05-23
نهاية لهذه الغاية: تعليمي أوراكل: وقت التاريخ شرح كيفية الاستخدام java.time
.
مثال إذا كان التاريخ هو 06 07 2016
SimpleDateFormat sdf= new SimpleDateFormat("dd MM yyyy");
يمكنك استخدام فاصلة أو توقف كامل أو مائل أو واصلة بين هذه التنسيق.
Ex: dd-mm-yyyy, it will display like(06-07-2016)
dd/mm/yyyy,it will display like(06/07/2016)
dd.mm.yyyy,it will display like(06.07.2016)
dd,mm,yyyy ,it will display like(06,07,2016)
MM - will display number of the Month.
MMM - will display Month Three character only(Ex: Jul)
MMMM - will display full month(Ex: July)
yyyy - will display full year(2016)
yy - will display last two digits(16)
hh - will display hours
mm -will display minutes
ss - will display seconds
a - will display AM or PM
Ex: if time is 12:09:10 PM means (hh:mm:ss a)
EEE- will display short week name(Ex: Wed)
EEEE- will display full week name(Ex: Wednesday)