पर डेटटाइम कब चुना है क्योंकि मैं अपना अधिकांश समय php और mysql या pgsql के साथ बिताता हूं, मैं दिनांक API को दिनांक API के लिए सामान्य शब्द के रूप में उपयोग करूंगा। PHP में कोई "दिनांक", "समय", "डेटटाइम" और "डेटटाइम ऑफसेट"हमने टाइमस्टैम
जैसे-जैसे मैं वेब एप्लिकेशन को अधिक से अधिक विस्तृत करता हूं, मैं अधिकांश समय डेटटाइम का उपयोग करता हूं, लेकिन कभी-कभी मुझे आश्चर्य होता है कि यह वास्तव में है या नहीं मैं क्या चाहता हूँ। उदाहरण के लिए ऐसा होता है कि मैं आज की तारीख को प्रदर्शित करना चाहता हूं (उदाहरण के लिए जब मैं एक मंच या ब्लॉग पोस्ट स्टोर करना चाहता हूं), कोई गणना नहीं है, प्रदान करने के लिए कोई फ़िल्टर नहीं है, कोई पुनरावृत्ति नहीं है ... तो मैं क्यों पर date()
फ़ंक्शन पर उपयोग करें?
मैंने this topic देखा जो प्रत्येक प्रौद्योगिकियों के पेशेवरों का कुछ सरल विवरण प्रदान करता है।
लेकिन यह वास्तव में प्रश्न का उत्तर नहीं देता है। क्या यह वास्तव में मेरे डेटाबेस में PHP और अन्य 2 बाइट्स में डेटटाइम ऑब्जेक्ट में 2 और बाइट फेंकने का नुकसान है क्योंकि यह मुझे DATE_INTERVAL
API (php में DateInterval
) और IntlDateFormatter का उपयोग करने की अनुमति देता है।
इसके अलावा, इस पोस्ट का कहना है कि unix_timestamp 1970 से सुरक्षित लेकिन यह तार्किक नहीं है और कुछ परीक्षण यह साबित होता है:
echo date('d/m/Y',time(-1));
गूँज '31/12/1969 '! और यह तार्किक है। एक 32 बिट्स हस्ताक्षर किए गए int 0 से 4 294 967 295
तक जाते हैं और 68 वर्षों में केवल 2 अरब सेकंड होते हैं, इसलिए int हस्ताक्षरित होता है और "ऋणात्मक टाइमस्टैम्प" मौजूद होना चाहिए!
एक और सोचता है कि मेरे लिए वास्तव में महत्वपूर्ण है, और यह मुझे हर समय डेटटाइम चुनता है कि मैं तिथियों से निपटना चाहता हूं, पूर्णांक के साथ नहीं। डेटटाइम एक तिथि है, टाइमस्टैम्प नहीं है! समय क्षेत्र से निपटने: केवल इस अर्थ में कि मैं टाइमस्टैम्प पाया क्योंकि उस cas टाइमस्टैम्प में बार मैं समय-निशान तक एक फ़ाइल नाम चाहता था टाइमस्टैम्प ...
हालांकि, वहाँ अभी भी एक समस्या है। MySQL और दूसरों के रूप में समय क्षेत्र प्रबंधन नहीं करती है जब दिनांक समय के रूप में दिनांक भंडारण, अब के लिए, मैं "भागने बाहर में फिल्टर" के भागने भाग के रूप में समयक्षेत्र एकीकरण का उपयोग
$toStoreDate = new \DateTime($_POST['date'],new DateTimeZone('UTC'));
$dao->exec('INSERT INTO mytable(mydate) VALUES (\''.$toStoreDate->format('Y-m-d h:i:s').'\')');
$toDisplayDate =new \DateTime($dao->query('SELECT mydate FROM mytable')
->fetch(DAO::FETCH_ASSOC)['mydate']);
$toDisplayDate->setTimeZone(new DateTimeZone('myLocal'));
यह सही तरीका है? क्या एक साधारण टाइमस्टैम्प स्टोर करना बेहतर नहीं होगा और फिर अच्छा स्थानीय समय प्राप्त होगा?
- दिनांक समय के 2 अधिक बाइट्स API (केवल प्रदर्शित)
- की बहुत आसान उपयोग में एक नुकसान है कि यह समय है:
तो, यहाँ सवाल का संक्षेप है unix_timestamp छोड़ने के लिए?
- क्या एक साधारण टाइमस्टैम्प स्टोर करना बेहतर नहीं होगा और फिर अच्छा स्थानीय समय प्राप्त होगा?
शायद अप्रासंगिक, लेकिन 'तारीख()' केवल 2038 वर्ष तक ही काम करेगा। उस वर्ष, 'दिनांक() 'शायद बहिष्कृत किया जाएगा ;-) –
भले ही 2038 64 बिट सिस्टम में मानक होगा? अगर नहीं, तो एक इंट से लंबी int तक यूनिक्स टाइमस्टैम्प विनिर्देश माइग्रेट करने में समस्या क्या है? – artragis
दरअसल। समय मापने के लिए जावास्क्रिप्ट 1/1/1970 से मिलीसेकंड का भी उपयोग करता है। मेरा अनुमान है कि यूनिक्स टाइमस्टैम्प यहां रहने के लिए है ^^ – Johan