2010-02-12 18 views
86

मैं Get-Date commandlet इस तरह की कोई समस्या नहीं फ़ॉर्मेट कर सकते हैं:PowerShell में डेटटाइम को कैसे प्रारूपित करें?

$date = Get-Date -format "yyyyMMdd" 

लेकिन एक बार मैं एक चर में a date मिल गया है, मैं इसे कैसे प्रारुपित करूँ?

"You must provide a value expression on the right-hand side of the '-f' operator"

+1

मैं वास्तव में इस वाक्यविन्यास कामना की कामना की। '$ date -format "yyyMmdd" '' {0: yyyyMMdd} '-f $ date' की तुलना में एक ऑब्जेक्ट को स्वरूपित करने के लिए अधिक सहज है। – orad

उत्तर

126

ही

$dateStr = $date -format "yyyMMdd" 

रिटर्न इस त्रुटि नीचे बयान।

$DateStr = $Date.ToString("yyyyMMdd") 

या

$DateStr = '{0:yyyyMMdd}' -f $Date 
+1

-f उत्तर साथी के लिए धन्यवाद! –

+1

yyyymmddhhmm सर कैसे प्रारूपित करें? – toha

+1

मुझे ऐसा लगता है: $ Date = Get-date -format "yyyyMMddhhmm" धन्यवाद – toha

9

एक बात तुम कर सकते हो है: आप नेट में होगा के रूप में

$date.ToString("yyyyMMdd") 
+0

धन्यवाद मैंने यह किया - मुझे यह बताता है कि -फॉर्मैट हालांकि काम नहीं करता है। –

+0

हां, @ जोश आइंस्टीन का समाधान पैसे पर सही है :) –

19

सवाल का जवाब दे रहा है, लेकिन कुछ और जानकारी गुम होती है:

चर बनाम Cmdlet

आप $Date चर और में एक मूल्य है -f ऑपरेटर इस फ़ॉर्म में काम करता है: 'format string' -f values। यदि आप Get-Date -format "yyyyMMdd" पर कॉल करते हैं तो आप कुछ पैरामीटर के साथ cmdlet पर कॉल करते हैं। मान "yyyyMMdd" पैरामीटर Format के लिए मान है (help Get-Date -param Format आज़माएं)।

-f ऑपरेटर

प्रारूप तार के बहुत सारे हैं, कम से कम part1 और part2 को देखो। वह string.Format('format string', values') का उपयोग करती है। 'format-string' -f values के रूप में समझें, क्योंकि -f ऑपरेटर string.Format पद्धति के रूप में बहुत इसी तरह काम करता है (यद्यपि वहाँ कुछ मतभेद (और जानकारी के लिए कर रहे हैं स्टैक ओवरफ़्लो पर सवाल को देखो:। How exactly does the RHS of PowerShell's -f operator work?)

+0

धन्यवाद जानकारी के लिए बहुत कुछ। –

+2

वह क्या कह रहा है कि -फॉर्मैट पैरामीटर एक स्ट्रिंग को वापस करने के लिए गेट-डेटटाइम का कारण बनता है, डेटटाइम ऑब्जेक्ट नहीं। तो आपकी परिवर्तनीय $ तिथि अब अपेक्षित के रूप में स्वरूपित नहीं की जा सकती है। मैं वास्तव में चाहता हूं कि -फॉर्मेट पैरामीटर किसी विशेष डेटटाइम ऑब्जेक्ट की ToString विधि के डिफ़ॉल्ट व्यवहार को बदल देगा। फिर यह काम करेगा जैसा आपने उम्मीद की थी। –

1

एक सरल और अच्छा तरीका है:

$time = (Get-Date).ToString("yyyy:MM:dd")

या बस

(Get-Date).ToString("yyyy:MM:dd")

4

एक बहुत सुविधाजनक है - लेकिन शायद सब भी कुशल नहीं - समाधान सदस्य समारोह GetDateTimeFormats(),

$d = Get-Date 
$d.GetDateTimeFormats() 

इस तिथि-मूल्य के लिए शैलियों स्वरूपण की एक बड़ी स्ट्रिंग सरणी आउटपुट का प्रयोग है। फिर आप []-ऑपरेटर के माध्यम से सरणी के तत्वों में से एक चुन सकते हैं, उदा।,

PS C:\> $d.GetDateTimeFormats()[12] 
Dienstag, 29. November 2016 19.14 
0

आप यहाँ डॉस में इस का उपयोग करने देता है तो:

powershell -Command (Get-Date).ToString('yyyy-MM-dd') 
1

कैसे यह कर यदि आप पूरी तरह -format विकल्प का उपयोग करने की आवश्यकता है के बारे में:

$dateStr = (Get-Date $date -Format "yyyMMdd") 

हालांकि

$dateStr = $date.toString('yyyMMdd') 

शायद अधिक कुशल है .. :)

+0

'$ dateStr = (Get-date $ date -Format" yyyMmdd ") 'किसी ऑब्जेक्ट प्रकार में परिणाम जो डेटाटाइम ऑब्जेक्ट से अलग है। इस '$ dateStr = [डेटाटाइम] (गेट-डेट $ डेट -फॉर्मेट" yyyMmdd ") के साथ खेलने का प्रयास करें। आप तुरंत अंतर देखेंगे। –

+0

अच्छा, हाँ .. यह एक स्ट्रिंग है, यही कारण है कि मैंने इसे दिनांक एसआरटी नाम दिया .. :) ओपी एक स्ट्रिंग को डेट ऑब्जेक्ट को प्रारूपित करने का प्रयास कर रहा था। – tplive

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