ฉันมีวันที่ในสตริงเช่น "12- ธันวาคม -2555" ฉันจะแปลงค่านี้เป็นมิลลิวินาที (ยาว) ได้อย่างไร
ฉันมีวันที่ในสตริงเช่น "12- ธันวาคม -2555" ฉันจะแปลงค่านี้เป็นมิลลิวินาที (ยาว) ได้อย่างไร
คำตอบ:
String string_date = "12-December-2012";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date d = f.parse(string_date);
long milliseconds = d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
ถึงเวลาที่ใครบางคนให้คำตอบที่ทันสมัยสำหรับคำถามนี้ ในปี 2555 เมื่อมีการถามคำถามคำตอบที่โพสต์กลับเป็นคำตอบที่ดีเช่นกัน เหตุใดคำตอบที่โพสต์ในปี 2559 จึงใช้ชั้นเรียนที่ล้าสมัยมานานแล้วSimpleDateFormat
และDate
เป็นเรื่องลึกลับสำหรับฉัน java.time
วันที่และเวลาของ Java API ที่ทันสมัยหรือที่เรียกว่า JSR-310 นั้นดีกว่ามากในการทำงานด้วย คุณสามารถใช้งานบน Android ผ่าน ThreeTenABP ดูคำถามนี้: วิธีใช้ ThreeTenABP ใน Android Projectในโครงการ
สำหรับวัตถุประสงค์มากที่สุดที่ผมแนะนำให้ใช้มิลลิวินาทีตั้งแต่ยุคที่เริ่มต้นของวันที่ใน UTC เพื่อรับสิ่งเหล่านี้:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
String stringDate = "12-December-2012";
long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
.atStartOfDay(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
System.out.println(millisecondsSinceEpoch);
สิ่งนี้พิมพ์:
1355270400000
หากคุณต้องการเวลา ณ จุดเริ่มต้นของวันในบางเขตเวลาให้ระบุเขตเวลานั้นแทน UTC ตัวอย่างเช่น
.atStartOfDay(ZoneId.of("Asia/Karachi"))
ตามที่คาดไว้สิ่งนี้ให้ผลลัพธ์ที่แตกต่างกันเล็กน้อย:
1355252400000
อีกจุดหนึ่งที่ควรทราบอย่าลืมระบุภาษาให้กับDateTimeFormatter
ไฟล์. ฉันใช้เดือนธันวาคมเป็นภาษาอังกฤษมีภาษาอื่นที่เรียกเดือนนั้นเหมือนกันดังนั้นโปรดเลือกสถานที่ที่เหมาะสมด้วยตัวคุณเอง หากคุณไม่ได้ระบุภาษาฟอร์แมตเตอร์จะใช้การตั้งค่าโลแคลของ JVM ซึ่งอาจใช้ได้ในหลาย ๆ กรณีจากนั้นวันหนึ่งก็ล้มเหลวโดยไม่คาดคิดเมื่อคุณเรียกใช้แอปบนอุปกรณ์ด้วยการตั้งค่าภาษาที่แตกต่างกัน
ดูSimpleDateFormat
คลาสที่สามารถแยกวิเคราะห์ a String
และส่งคืน a Date
และgetTime
วิธีการของDate
คลาสได้
java.util.Date
โดยใช้ตัวจัดรูปแบบวันที่คุณสามารถใช้ simpleDateFormat เพื่อแยกวิเคราะห์วันที่ของสตริง
วิธีที่ง่ายที่สุดคือใช้ Date Using Date () และ getTime ()
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
โดยใช้รูปแบบจำลองที่คุณสามารถทำได้อย่างง่ายดาย
1) ก่อนอื่นให้แปลงสตริงเป็น java.Date โดยใช้ simpledateformatter
2) ใช้เมธอด getTime เพื่อรับจำนวนมิลลิวินาทีจากวันที่
public class test {
public static void main(String[] args) {
String currentDate = "01-March-2016";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date parseDate = f.parse(currentDate);
long milliseconds = parseDate.getTime();
}
}
ตัวอย่างเพิ่มเติมคลิกที่นี่
ลองใช้โค้ดด้านล่าง
SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
Date d = null;
try {
d = f.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
long timeInMillis = d.getTime();