مخرجات SimpleDateFormatter.parse بشكل مختلف عن المحدد
عند تحويل الطوابع الزمنية لنظام UNIX إلى تواريخ باستخدام SimpleDateFormat، قد تواجه اختلافات بين التنسيق المحدد والتنسيق المحدد الإخراج.
في المثال المحدد، الهدف هو تحويل الطابع الزمني لـ UNIX ("a1527069600") إلى تاريخ بالتنسيق "dd/MM/yyyy hh:mm:ss a". ومع ذلك، فإن استخدام SimpleDateFormatter.format متبوعًا بـ SimpleDateFormatter.parse يؤدي إلى نتائج مختلفة.
سبب التناقض
يحدث التناقض لأن SimpleDateFormatter.parse يتوقع سلسلة بالملف الدقيق التنسيق المحدد أثناء إنشاء مثيل ("dd/MM/yyyy hh:mm:ss a"). في هذه الحالة، يقوم SimpleDateFormatter.format بإخراج التاريخ بتنسيق مختلف عن تنسيق الإدخال المتوقع، مما يتسبب في فشل عملية التحليل.
الحل
لتجنب هذه المشكلة يوصى بعدم تمرير سلاسل التاريخ إلى قواعد بيانات MySQL. بدلاً من ذلك، استخدم كائنات التاريخ. توفر واجهة برمجة تطبيقات التاريخ والوقت الحديثة لـ Java، java.time، فئات مثل LocalDateTime التي تجعل التعامل مع التاريخ أسهل.
مثال:
String ep = "a1527069600";
long epoch = Long.parseLong(ep.substring(1));
Instant inst = Instant.ofEpochSecond(epoch);
LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();
System.out.println(ldt.toString()); // Output: 2018-05-23T15:30
PreparedStatement ps = myDatabaseConnection.prepareStatement(
"insert into my_table (my_date_time) values (?)");
ps.setObject(1, ldt);
يحول هذا الرمز الطابع الزمني لـ UNIX إلى LocalDateTime، والذي يمكن إدراجه مباشرة في قاعدة بيانات MySQL.
الاستنتاج:
باستخدام java.time وتمرير كائنات التاريخ بدلاً من السلاسل إلى MySQL، يمكنك التخلص من مشكلات التنسيق والتأكد من دقة تحويل التاريخ.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3