คำถามติดแท็ก simpledateformat

8
รูปแบบวันที่นี้คืออะไร 2011-08-12T20: 17: 46.384Z
ฉันมีวันที่ดังต่อไปนี้: 2011-08-12T20:17:46.384Z. รูปแบบนี้คืออะไร ฉันพยายามแยกวิเคราะห์ด้วย Java 1.4 ผ่านทางDateFormat.getDateInstance().parse(dateStr)และฉันจะได้รับ java.text.ParseException: วันที่ไม่สามารถค้นหา: "2011-08-12T20: 17: 46.384Z" ฉันคิดว่าฉันควรใช้SimpleDateFormatสำหรับการวิเคราะห์คำ แต่ฉันต้องรู้สตริงรูปแบบก่อน ทั้งหมดที่ฉันมีคือจนถึงตอนนี้yyyy-MM-ddเพราะฉันไม่รู้ความTหมายในสตริงนี้ - บางสิ่งเกี่ยวข้องกับเขตเวลา สตริงวันนี้จะมาจากlcmis:downloadedOnแท็กที่แสดงบนไฟล์ CMIS ประเภทสื่อดาวน์โหลดประวัติศาสตร์

3
อักขระรูปแบบไม่ถูกต้อง 'T' เมื่อวิเคราะห์สตริงวันที่ไปยัง java.util.Date
ฉันมีสตริงวันที่และฉันต้องการแยกเป็นวันที่ปกติให้ใช้ Java Date API ต่อไปนี้คือรหัสของฉัน: public static void main(String[] args) { String date="2010-10-02T12:23:23Z"; String pattern="yyyy-MM-ddThh:mm:ssZ"; SimpleDateFormat sdf=new SimpleDateFormat(pattern); try { Date d=sdf.parse(date); System.out.println(d.getYear()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } อย่างไรก็ตามฉันได้รับข้อยกเว้น: java.lang.IllegalArgumentException: Illegal pattern character 'T' ดังนั้นฉันสงสัยว่าฉันต้องแยกสตริงและแยกมันด้วยตนเองหรือไม่ BTW ฉันพยายามเพิ่มอักขระเครื่องหมายคำพูดเดี่ยวที่ด้านใดด้านหนึ่งของ T: String pattern="yyyy-MM-dd'T'hh:mm:ssZ"; มันยังไม่ทำงาน

8
แปลงสตริงเป็นวัตถุปฏิทินใน Java
ฉันใหม่กับ Java ซึ่งมักจะทำงานกับ PHP ฉันพยายามแปลงสตริงนี้: จ. 14 มี.ค. 16:02:37 GMT 2011 เป็นวัตถุในปฏิทินเพื่อให้ฉันสามารถดึงปีและเดือนได้อย่างง่ายดาย: String yearAndMonth = cal.get(Calendar.YEAR)+cal.get(Calendar.MONTH); มันจะเป็นความคิดที่ดีที่จะแยกมันด้วยตนเอง? ใช้วิธี substring หรือไม่ คำแนะนำใด ๆ ที่จะช่วยขอบคุณ!

25
ฉันจะรับวันที่ปัจจุบันใน Android ได้อย่างไร
ฉันเขียนรหัสต่อไปนี้ Date d = new Date(); CharSequence s = DateFormat.format("MMMM d, yyyy ", d.getTime()); แต่ขอพารามิเตอร์ฉันฉันต้องการวันที่ปัจจุบันในรูปแบบสตริง ชอบ 28-Dec-2011 เพื่อที่ฉันสามารถตั้งTextView, อธิบายหน่อยถ้าคุณคิดว่าจำเป็นต้องใช้บางสิ่งฉันเป็นคนใหม่ในการพัฒนา Android

7
Java SimpleDateFormat (“ yyyy-MM-dd'T'HH: mm: ss'Z '”) ให้เขตเวลาเป็น IST
ฉันมีตัวสร้าง SimpleDateFormat เป็น SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") และฉันแยกสตริง "2013-09-29T18:46:19Z". ฉันได้อ่านแล้วว่าที่นี่ Z หมายถึงGMT/UTCเขตเวลา แต่เมื่อฉันพิมพ์วันที่นี้บนคอนโซลมันจะพิมพ์เวลา IST สำหรับวันที่ส่งคืน ตอนนี้คำถามของฉันคือว่าผลลัพธ์ของฉันถูกหรือผิด?

19
คุณจัดรูปแบบวันในเดือนนั้นเพื่อพูดว่า "11th", "21" หรือ "23" (ตัวบ่งชี้ลำดับ) อย่างไร
ฉันรู้ว่านี้จะให้ฉันวันของเดือนเป็นตัวเลข ( 11, 21, 23): SimpleDateFormat formatDayOfMonth = new SimpleDateFormat("d"); แต่อย่างไรคุณจัดรูปแบบวันที่ของเดือนที่จะมีตัวบ่งชี้ลำดับการพูด11th, 21stหรือ23rd?

6
มีรูปแบบวันที่เพื่อแสดงวันในสัปดาห์ใน java หรือไม่?
ฉันรู้รูปแบบวันที่เช่น "yyyy-mm-dd"- ซึ่งแสดงวันที่ในรูปแบบ2011-02-26 "yyyy-MMM-dd"- ซึ่งแสดงวันที่ในรูปแบบ2011-FEB-26 ที่จะใช้เช่น: SimpleDateFormat formatter = new SimpleDateFormat( "yyyy/MMM/dd "); ฉันต้องการรูปแบบที่จะช่วยแสดงวันในสัปดาห์เช่น2011-02-MONหรืออะไรก็ได้ ฉันแค่ต้องการให้วันในสัปดาห์แสดงเป็นตัวอักษรพร้อมเดือนและปี ช่วยบอกรูปแบบเช่นนี้ได้ไหม

12
วิธีเพิ่มนาทีในวันที่ของฉัน
ฉันมีวัตถุวันที่นี้: SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm"); Date d1 = df.parse(interviewList.get(37).getTime()); ค่าของ d1 คือ Fri Jan 07 17:40:00 PKT 2011 ตอนนี้ฉันกำลังพยายามเพิ่ม 10 นาทีในวันที่ด้านบน Calendar cal = Calendar.getInstance(); cal.setTime(d1); cal.add(Calendar.MINUTE, 10); String newTime = df.format(cal.getTime()); มูลค่าของnewTimeการเปลี่ยนแปลงแต่มันควรจะเป็น2011-50-07 17:50 07-01-2011 17:50 มันเพิ่มนาทีถูกต้อง แต่มันเปลี่ยนเดือนด้วยไม่รู้ทำไม!

9
การซิงโครไนซ์การเข้าถึง SimpleDateFormat
javadoc สำหรับ SimpleDateFormat ระบุว่า SimpleDateFormat ไม่ซิงโครไนซ์ "รูปแบบวันที่ไม่ซิงโครไนซ์ขอแนะนำให้สร้างอินสแตนซ์รูปแบบแยกกันสำหรับแต่ละเธรดหากเธรดหลายชุดเข้าถึงรูปแบบพร้อมกันจะต้องซิงโครไนซ์กับภายนอก" แต่อะไรคือแนวทางที่ดีที่สุดในการใช้อินสแตนซ์ของ SimpleDateFormat ในสภาพแวดล้อมแบบมัลติเธรด นี่คือตัวเลือกบางตัวที่ฉันคิดไว้ฉันเคยใช้ตัวเลือก 1 และ 2 ในอดีต แต่ฉันอยากรู้ว่ามีทางเลือกอื่นที่ดีกว่าหรือไม่หรือตัวเลือกใดที่จะให้ประสิทธิภาพและการทำงานพร้อมกันที่ดีที่สุด ตัวเลือกที่ 1: สร้างอินสแตนซ์ในเครื่องเมื่อจำเป็น public String formatDate(Date d) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(d); } ตัวเลือกที่ 2: สร้างอินสแตนซ์ของ SimpleDateFormat เป็นตัวแปรคลาส แต่ซิงโครไนซ์การเข้าถึง private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); public String formatDate(Date d) { synchronized(sdf) …

5
Y ส่งคืน 2012 ในขณะที่ y ส่งคืน 2011 ใน SimpleDateFormat
ฉันสงสัยว่าทำไม 'Y' ถึงกลับมาในปี 2012 ในขณะที่ 'y' ส่งคืน 2011 ในSimpleDateFormat: System.out.println(new SimpleDateFormat("Y").format(new Date())); // prints 2012 System.out.println(new SimpleDateFormat("y").format(new Date())); // prints 2011 มีใครอธิบายได้ไหมว่าทำไม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.