दिलचस्प पोस्ट
जावा में System.load () और System.loadLibrary के बीच का अंतर सी # में कैनवास पर एक पंक्ति को कैसे सजीव करना है? स्ट्रिंग में वर्ण का स्थान ढूंढें jQuery सीएसएस प्लगइन जो तत्व की गणना शैली को छद्म क्लोन को देता है जो कि तत्व है? हास्केल में कॉमोनैड प्रकार वर्ग क्या है? कंसोल आउटपुट को एक txt फ़ाइल में कैसे लिखें अवैध ब्लॉकस्केस अपवाद जब एईएस के साथ एक स्ट्रिंग एन्क्रिप्ट और डिक्रिप्ट करने का प्रयास करता है इंटेन्ट (फ़्रोयो) का उपयोग करके एंड्रॉइड कैलेंडर ऐप्लिकेशन लॉन्च कैसे करें एंड्रॉइड ग्रेड: वर्जन बनाम वर्जन बनाम कम्पाइल SDKVersion शेल को समाप्त करने के लिए प्रतीक्षा करें, फिर कक्षों को प्रारूपित करें – सिंक्रनाइज़ कमांड को निष्पादित करें ऑपरेटर को << एक मित्र के रूप में या एक सदस्य समारोह के रूप में लागू किया जाना चाहिए? पायथन 2. एक्स में रेंज और एक्सरेन्ज फ़ंक्शन के बीच अंतर क्या है? जावा में "इंफरेस्ट नहीं किया जा सकता" क्या फोर्ट्रान सी से भारी गणना के लिए अनुकूल है? WPF MVVM INotifyPropertyChanged कार्यान्वयन – मॉडल या ViewModel

स्ट्रॉटोम () डीडी / एमएम / वाई वाई वाई वाई प्रारूप के साथ काम नहीं करता है

मैं वास्तव में strtotime() फ़ंक्शन की तरह है, लेकिन उपयोगकर्ता मैनुअल समर्थित दिनांक प्रारूपों का पूरा वर्णन नहीं देता है। strtotime('dd/mm/YYYY') काम नहीं करता है, यह केवल mm/dd/YYYY प्रारूप के साथ काम करता है

अगर मेरे पास dd/mm/YYYY YYYY-mm-dd प्रारूप है, तो मैं इसे YYYY-mm-dd कैसे परिवर्तित कर सकता हूं? मैं इसे explode() फ़ंक्शन का उपयोग करके कर सकता हूं, लेकिन मुझे लगता है कि बेहतर समाधान हैं

वेब के समाधान से एकत्रित समाधान "स्ट्रॉटोम () डीडी / एमएम / वाई वाई वाई वाई प्रारूप के साथ काम नहीं करता है"

यहां सरल समाधान है:

 $date = '25/05/2010'; $date = str_replace('/', '-', $date); echo date('Ym-d', strtotime($date)); 

परिणाम:

 2010-05-25 

strtotime दस्तावेज पढ़ता है:

एम / डी / वाई या डीएमआई स्वरूपों की तारीखें विभिन्न घटकों के बीच विभाजक को देखते हुए अलग-थलग होती हैं: यदि विभाजक स्लैश ( / ) है, तो अमेरिकी एम / डी / वाई ग्रहण किया जाता है; जबकि अगर विभाजक एक डैश ( ) या डॉट ( ) है, तो यूरोपीय डीएमआई प्रारूप माना जाता है।

आप DateTime :: createFromFormat के साथ एक कस्टम प्रारूप (PHP 5.3 के रूप में) की तारीखों को पार्स कर सकते हैं

 $timestamp = DateTime::createFromFormat('!d/m/Y', '23/05/2010')->getTimestamp(); 

(एक तरफ: ! यूनिक्स टाइमस्टैम्प के लिए गैर-निर्दिष्ट मानों को रीसेट करने के लिए प्रयोग किया जाता है, अर्थात समय आधी रात होगा।)


यदि आप PHP 5.3 का उपयोग नहीं करना चाहते (या नहीं कर सकते), तो उपलब्ध तिथि / समय प्रारूपों की पूरी सूची जो कि स्ट्रॉटोमेम स्वीकार करती है, तिथि स्वरूपों पुस्तिका पृष्ठ पर सूचीबद्ध होती है। उस पृष्ठ को इस तथ्य का अच्छी तरह से वर्णन किया गया है कि m/d/Y d/m/Y पर अनुमान लगाया गया है (लेकिन आप यहां उत्तर में वर्णित हैं, dmY , dmY या d\tm\tY )


अतीत में, मैंने एक और जवाब में उल्लिखित str_replace को भी सहारा लिया है, साथ ही तारीख स्ट्रिंग को किसी अन्य प्रारूप में पार्स करना भी पसंद है

 $subject = '23/05/2010'; $formatted = vsprintf('%3$04d/%2$02d/%1$02d', sscanf($subject,'%02d/%02d/%04d')); $timestamp = strtotime($formatted); 

STRTOTIME writeup नोट से:

एम / डी / वाई या डीएमआई स्वरूपों की तारीखें विभिन्न घटकों के बीच विभाजक को देखते हुए अलग-थलग होती हैं: यदि विभाजक स्लैश (/) है, तो अमेरिकी एम / डी / वाई ग्रहण किया जाता है; जबकि अगर विभाजक एक डैश (-) या डॉट (।) है, तो यूरोपीय डीएमआई प्रारूप माना जाता है।

यह बहुत ही सरल है।

यह कई समस्याओं का एक अच्छा समाधान है:

 function datetotime ($date, $format = 'YYYY-MM-DD') { if ($format == 'YYYY-MM-DD') list($year, $month, $day) = explode('-', $date); if ($format == 'YYYY/MM/DD') list($year, $month, $day) = explode('/', $date); if ($format == 'YYYY.MM.DD') list($year, $month, $day) = explode('.', $date); if ($format == 'DD-MM-YYYY') list($day, $month, $year) = explode('-', $date); if ($format == 'DD/MM/YYYY') list($day, $month, $year) = explode('/', $date); if ($format == 'DD.MM.YYYY') list($day, $month, $year) = explode('.', $date); if ($format == 'MM-DD-YYYY') list($month, $day, $year) = explode('-', $date); if ($format == 'MM/DD/YYYY') list($month, $day, $year) = explode('/', $date); if ($format == 'MM.DD.YYYY') list($month, $day, $year) = explode('.', $date); return mktime(0, 0, 0, $month, $day, $year); } 

सबसे तेज़ होना चाहिए

 false!== ($date !== $date=preg_replace(';[0-2]{2}/[0-2]{2}/[0-2]{2};','$3-$2-$1',$date)) 

यह गलत हो जाएगा यदि प्रारूप उचित एक जैसा नहीं दिखता है, लेकिन यह मौसम की जांच नहीं करेगा, यह तारीख वैध है

मुझे एक बेहतर समाधान नहीं मिला है आप explode() , preg_match_all() , आदि का उपयोग कर सकते हैं।

मेरे पास इस तरह एक स्थिर सहायक कार्य है

 class Date { public static function ausStrToTime($str) { $dateTokens = explode('/', $str); return strtotime($dateTokens[1] . '/' . $dateTokens[0] . '/' . $dateTokens[2]); } } 

संभवत: उस के लिए एक बेहतर नाम है, लेकिन मैं ausStrToTime() उपयोग करता ausStrToTime() क्योंकि यह ऑस्ट्रेलियाई तारीखों के साथ काम करता है (जिसे मैं अक्सर ऑस्ट्रेलियाई होने के साथ सौदा करता हूं)। एक बेहतर नाम शायद मानकीकृत नाम होगा, लेकिन मुझे यकीन नहीं है कि वह क्या है।

क्या आपको यह मान डेटाबेस से मिल रहा है? यदि हां, तो उसे डेटाबेस में स्वरूपण पर विचार करें (उदाहरण के लिए, mysql में date_format का उपयोग करें)। यदि नहीं, तो मूल्य विस्फोट करना सबसे अच्छा शर्त हो सकती है, क्योंकि स्ट्रॉटोम सिर्फ डीडी / एमएम / याय मूल्यों की सराहना नहीं करता है।

यदि आप जानते हैं कि यह डीडी / एमएम / वाई वाई वाईवाय में है, तो आप ऐसा कर सकते हैं:

  $regex = '#([/d]{1,2})/([/d]{1,2})/([/d]{2,4})#'; $match = array(); if (preg_match($regex, $date, $match)) { if (strlen($match[3]) == 2) { $match[3] = '20' . $match[3]; } return mktime(0, 0, 0, $match[2], $match[1], $match[3]); } return strtotime($date); 

यह दिनांक डी / एम / वाई वाई या डीडी / एमएम / वाई वाई वाई वाई (या दो के किसी भी संयोजन) में तारीखों को मैच करेगा …

यदि आप बस से अधिक विभाजक का समर्थन करना चाहते हैं, तो आप regex को इसमें बदल सकते हैं:

  $regex = '#([\d]{1,2})[/-]([\d]{1,2})[/-]([\d]{2,4})#'; 

और फिर [/-] बिट में कोई भी अक्षर जोड़ना (नोट, चरित्र को अंतिम होना चाहिए)

विस्फोट की तुलना में यह समाधान सरल और अधिक सुरुचिपूर्ण है:

 $my_date = str_replace("/", ".", $my_date); $my_date = strtotime($my_date); $my_date = date("Ymd", $my_date); 

आप को यह पता नहीं है कि आपको किस दिनांक में तारीख मिल रही है, लेकिन यदि यह स्लैश के साथ आता है तो उन्हें पूर्ण स्टॉप के साथ बदल दिया जाता है और यह स्ट्रटोटेम द्वारा यूरोपीय के रूप में माना जाता है।

मैंने ddmmyy प्रारूप को date("Ymd" वाईएमडी date("Ymd" प्रारूप में परिवर्तित करने की कोशिश की लेकिन जब मैं सीधे ddmmyy =date('dmy') पास करता हूं, तो काम नहीं कर रहा था

तो एहसास हुआ कि यह yyyy-mm-dd प्रारूप में होना चाहिए। व्यवस्थित करने के लिए उप-ऑब्जेक्ट का इस्तेमाल किया

 $strParam = '20'.substr($_GET['date'], 4, 2).'-'.substr($_GET['date'], 2, 2).'-'.substr($_GET['date'], 0, 2); 

फिर date("Ymd",strtotime($strParam)); पारित date("Ymd",strtotime($strParam));

इसने काम कर दिया!

$srchDate = date_format(date_create_from_format('d/m/Y', $srchDate), 'Y/m/d');

यह आपके लिए काम करेगा आप स्ट्रिंग को एक कस्टम दिनांक स्वरूप में कनवर्ट करते हैं, जहां आप PHP को निर्दिष्ट कर सकते हैं कि स्ट्रिंग का मूल स्वरूप जो उसे दिया गया था। अब जब यह डेट प्रारूप है, तो आप इसे PHP के डिफ़ॉल्ट दिनांक प्रारूप में बदल सकते हैं, जो कि उसी तरह है जिसे MySQL द्वारा उपयोग किया जाता है

सरलतम समाधान यह है:

 $date = '07/28/2010'; $newdate = date('Ym-d', strtotime($date));