तारीखों को अपने MySQL डेटाबेस में स्ट्रिंग्स के रूप में पास न करें। डेट ऑब्जेक्ट्स को पास करना बेहतर, आसान और सुरक्षित दोनों है। एक बात के लिए, यह आपको स्वरूपण और किसी भी स्वरूपण समस्या से छुटकारा दिलाता है। सबसे अच्छा, java.time
. से कक्षा के पास इंस्टेंसेस , आधुनिक जावा दिनांक और समय API। आपके मामले में एक 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);
PreparedStatement ps = myDatabaseConnection.prepareStatement(
"insert into my_table (my_date_time) values (?)");
ps.setObject(1, ldt);
LocalDateTime
प्राप्त है:
मैंने आपके रूपांतरण को युग स्ट्रिंग से थोड़ा सा सरल बनाया है। एक आदिम, लोअरकेस long
का प्रयोग करें long
. के बजाय वस्तु। मैं आपके समय क्षेत्र, एशिया/कलकत्ता का उपयोग कर रहा हूं, यह मानते हुए कि आपके डेटाबेस मान इस समय क्षेत्र में हैं। यूटीसी में डेटाबेस मान रखने के लिए सामान्य अनुशंसाएं हैं, कम से कम यदि कोई संभावना है कि डेटा का उपयोग आपके समय क्षेत्र के बाहर कभी भी किया जाएगा। यदि आप यह चाहते हैं, तो ऊपर दिए गए रूपांतरण के बजाय इस रूपांतरण का उपयोग करें:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
लिंक: Oracle ट्यूटोरियल:दिनांक समय
java.time
use का उपयोग करने का तरीका समझाते हुए ।