วิธีการแปลงวันที่สตริงเป็นมิลลิวินาทีแบบยาว


คำตอบ:




11

ถึงเวลาที่ใครบางคนให้คำตอบที่ทันสมัยสำหรับคำถามนี้ ในปี 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 ซึ่งอาจใช้ได้ในหลาย ๆ กรณีจากนั้นวันหนึ่งก็ล้มเหลวโดยไม่คาดคิดเมื่อคุณเรียกใช้แอปบนอุปกรณ์ด้วยการตั้งค่าภาษาที่แตกต่างกัน


9

ดูSimpleDateFormatคลาสที่สามารถแยกวิเคราะห์ a Stringและส่งคืน a DateและgetTimeวิธีการของDateคลาสได้





1

โดยใช้รูปแบบจำลองที่คุณสามารถทำได้อย่างง่ายดาย

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

ตัวอย่างเพิ่มเติมคลิกที่นี่


0

ลองใช้โค้ดด้านล่าง

        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();
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.