2012-01-05 11 views
45

मैं दिनांक समय वस्तु जो मैं वर्तमान मेंप्रारूपण दिनांक समय वस्तु, का सम्मान लोकेल :: getDefault()

$mytime->format("D d.m.Y") 

के माध्यम से कर रहा हूँ formating कौन सा मुझे बिल्कुल प्रारूप मैं की जरूरत है देता है:

मंगल 5.3 .2012

एकमात्र गायब बिंदु सही भाषा है। मुझे Tue (Tuesday) का जर्मन अनुवाद चाहिए, जो Die (Dienstag) है।

यह मैं सही स्थान

Locale::getDefault() 

स्थापित करने देता है लेकिन मैं नहीं जानता कि यह कैसे उपयोग करने के लिए DateTime::format बताने के लिए।

$mytime->format("D d.m.Y", \Locale::getDefault()); 
+0

देखभाल करें: strftime ("% a% e।% L।% Y", \ Locale :: getDefault()) काम नहीं करता है (कम से कम मेरे सेटअप पर), क्योंकि getDefault() "de" देता है "de_DE" के बजाय ... – stoefln

+1

स्ट्रैटाइम का दूसरा पैरामीटर टाइमस्टैम्प होना चाहिए, न कि लोकेल। – Jonathan

+0

ओह, क्षमा करें। पूरी तरह से स्पष्ट है कि यह काम नहीं करता है। मैं वास्तव में यह बताना चाहता था कि सेटलोकेल (एलसी_TIME, \ लोकेल :: getDefault()) काम नहीं करता है (मेरे symfony2 ऐप में) – stoefln

उत्तर

48

क्योंकि format है कि स्थान के लिए ध्यान देना नहीं है:

की तरह कुछ करने के लिए एक तरह से वहाँ नहीं है। आपको इसके बजाय strftime का उपयोग करना चाहिए।

उदाहरण के लिए:

setlocale(LC_TIME, "de_DE"); //only necessary if the locale isn't already set 
$formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp()) 
+8

यह व्यवहार php docs में [dateTime :: format] (http: // www.php.net/manual/hi/datetime.format.php): * 'यह विधि लोकल का उपयोग नहीं करती है। सभी आउटपुट अंग्रेजी में हैं। * * – rdlowrey

+20

स्ट्रैटाइम() 1 9 70 से पहले तिथियों के साथ काम नहीं करता है, डेट_टाइम :: प्रारूप() स्थानीय लोगों के साथ काम नहीं करता है ... क्या कोई ऐसा काम है जो दोनों के साथ काम करता है? –

+1

@ जे के के: स्थानीयकरण को जोड़ने के लिए PHP की मूल डेटटाइम कक्षा का विस्तार करना हमेशा संभव है। – Duroth

81

आप तारीख को स्वरूपित करने Intl एक्सटेंशन का उपयोग कर सकते हैं। यह चयनित लोकेल के अनुसार दिनांक/समय प्रारूपित करेगा, या आप इसे IntlDateFormatter::setPattern() के साथ ओवरराइड कर सकते हैं।

आपके वांछित आउटपुट प्रारूप के लिए कस्टम पैटर्न का उपयोग करने का एक त्वरित उदाहरण, ऐसा लगता है।

$dt = new DateTime; 

$formatter = new IntlDateFormatter('de_DE', IntlDateFormatter::SHORT, IntlDateFormatter::SHORT); 
$formatter->setPattern('E d.M.yyyy'); 

echo $formatter->format($dt); 

निम्नलिखित में से कौन सा आउटपुट (आज के लिए, कम से कम)।

Di. 4.6.2013


संपादित: आह बू! एक प्राचीन प्रश्न का उत्तर दिया क्योंकि कुछ टिप्पणियों ने इसे सूची में उछाल दिया! कम से कम इंटेल विकल्प का उल्लेख अब किया गया है।

+0

यह अच्छा है कि आपने एक प्राचीन प्रश्न का उत्तर दिया, क्योंकि यह प्रश्न Google खोज परिणामों के शीर्ष पर पॉप अप करता है और केवल पुरानी जानकारी प्रदान करता है। –

+0

प्लस जब आप (सफलतापूर्वक) पुराने प्रश्न का उत्तर देते हैं तो आपको "नेक्रोमैंसर" बैज मिलता है। – aesede

+0

और इसे सही उत्तर के रूप में अपडेट किया जाना चाहिए – Celoain

संबंधित मुद्दे