পাওয়ারশেলে একটি ডেটটাইম কীভাবে ফর্ম্যাট করবেন


155

আমি Get-Datecmdlet এর মতো কোনও সমস্যায় ফর্ম্যাট করতে পারি:

$date = Get-Date -format "yyyyMMdd"

তবে একবার আমি ভেরিয়েবলের তারিখ পেয়েছি , আমি কীভাবে এটি বিন্যাস করব? নীচে বিবৃতি

$dateStr = $date -format "yyyMMdd"

এই ত্রুটিটি প্রদান করে:

"আপনাকে অবশ্যই '-f' অপারেটরের ডানদিকে একটি মান প্রকাশ করতে হবে"


3
আমি আসলে এই সিনট্যাক্সটি কাজ করতে চাই w $date -format "yyyMMdd"একক অবজেক্টের চেয়ে ফর্ম্যাট করার জন্য অনেক বেশি স্বজ্ঞাত '{0:yyyyMMdd}' -f $date
ওরাড

একদিকে যেমন: পাওয়ারশেলের একটি -fঅপারেটর রয়েছে (স্বীকৃত উত্তরের মতো সিনট্যাক্স সহ) তবে কোনও -formatঅপারেটর নেই। ত্রুটি বার্তাটি ormatবৈধ আরএইচএস অপারেন্ড না হওয়ার বিষয়ে অভিযোগ করছে , তবে নোট করুন যে সাম্প্রতিক পাওয়ারশেল সংস্করণগুলি আসলে একটি ভিন্ন, আরও সহায়ক ত্রুটি বার্তা প্রেরণ করে:Unexpected token '-format' in expression or statement
এমকিলেমেন্ট ০২

উত্তর:



25

প্রশ্নের উত্তর দেওয়া হয়েছে, তবে আরও কিছু তথ্য নেই:

চলক বনাম সিএমডলেট

আপনি একটি মূল্য আছে $Dateপরিবর্তনশীল এবং -fঅপারেটর এই ফর্মে কাজ করে: 'format string' -f values। আপনি যদি কল করেন তবে কিছু পরামিতি সহ Get-Date -format "yyyyMMdd"একটি সেমিডলেট কল করুন । "YyyyMMdd" মানটি প্যারামিটারের জন্য মান Format(চেষ্টা করুন help Get-Date -param Format)।

-f অপারেটর

ফর্ম্যাট স্ট্রিং প্রচুর আছে। কমপক্ষে part1 এবং part2 এ দেখুন । তিনি ব্যবহার করেন string.Format('format string', values')। হিসাবে মনে করে 'format-string' -f values, কারণ -fঅপারেটর হিসাবে খুব একভাবে কাজ করে string.Formatপদ্ধতি (যদিও কিছু পার্থক্য (স্ট্যাক ওভারফ্লো অন্তর্গত প্রশ্নগুলি এ আরো তথ্য চেহারার জন্য আছেন: কিভাবে ঠিক করে PowerShell এর -f অপারেটর কাজের RHS? )।


3
তিনি যা বলছেন তা হ'ল -ফর্ম্যাট প্যারামিটারের কারণে ডেটটাইম অবজেক্ট নয়, গেট-ডেটটাইমকে স্ট্রিং ফিরিয়ে আনা হয়। সুতরাং আপনার পরিবর্তনশীল $ তারিখ আর প্রত্যাশিত হিসাবে ফর্ম্যাট করা যাবে না। আমি সত্যিই এই কামনা করি যে-ফরমেট প্যারামিটারটি কেবল কোনও নির্দিষ্ট ডেটটাইম অবজেক্টের টোস্ট্রিং পদ্ধতির ডিফল্ট আচরণটি পরিবর্তন করে। তারপরে এটি আপনার প্রত্যাশা মতো কাজ করবে।
নাথান হার্টলি

19

একটি জিনিস আপনি করতে পারেন:

$date.ToString("yyyyMMdd")

ধন্যবাদ আমি এটি করেছি - বাগগুলি আমাকে যে ফর্ম্যাটটি কাজ করে না।
ইভ।

18

একটি খুব সুবিধাজনক - তবে সম্ভবত সমস্ত খুব দক্ষ নয় - সমাধান হ'ল সদস্য ফাংশনটি ব্যবহার করা GetDateTimeFormats(),

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

এটি তারিখ-মানের জন্য বিন্যাস শৈলীর একটি বড় স্ট্রিং-অ্যারে আউটপুট করে। তারপরে আপনি []অ্যারেটারের মাধ্যমে অ্যারের উপাদানগুলির মধ্যে একটি বেছে নিতে পারেন , যেমন,

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

16

একটি সহজ এবং দুর্দান্ত উপায়:

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


2
এটিই ছিল একমাত্র পদ্ধতির যা আমার জন্য নাল-মূল্যবান এক্সপ্রেশন ত্রুটি ফেলেনি। ধন্যবাদ।
Ecker00

7

আপনার যদি -Formatবিকল্পটি ব্যবহার করার প্রয়োজন হয় তবে এটি করুন :

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

যাহোক

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

সম্ভবত আরও দক্ষ .. :)


$dateStr = (Get-Date $date -Format "yyyMMdd")ডেটটাইম অবজেক্টের থেকে পৃথক কোনও অবজেক্ট টাইপের ফলাফল। $dateStr = [datetime](Get-Date $date -Format "yyyMMdd") এটির সাথে খেলা করার চেষ্টা করুন আপনি এখনই পার্থক্যটি দেখতে পাবেন।
জেমি মার্শাল

1
ঠিক আছে, হ্যাঁ .. এটি একটি স্ট্রিং, এজন্যই আমি এর নাম রেখেছি তারিখআরসি .. :) ওপি একটি স্ট্রিংয়ে একটি তারিখের অবজেক্টটি ফর্ম্যাট করার চেষ্টা করছিল।
tplive


4

আমার সময় এবং ফর্ম্যাটটিতে কিছুটা পরিবর্তন দরকার ছিল। এটি আমার উদ্দেশ্যে দুর্দান্ত কাজ করে:

$((get-date).ToLocalTime()).ToString("yyyy-MM-dd HHmmss")

2019-08-16 215757

মন্তব্যে @ এমকিলেমেন্ট ০ অনুসারে, এটি একই ফলাফল অর্জন করবে:

(get-date).ToString("yyyy-MM-dd HHmmss")

3

@ স্টেজের কাছ থেকে খুব তথ্যমূলক উত্তর , তবে এখানে একটি সংক্ষিপ্ত উত্তর: অন্যান্য বিকল্পগুলির মধ্যে আপনার কাছে [সিস্টেম.ডেটটাইম] ফরম্যাট করার জন্য 3 টি সহজ বিকল্প রয়েছে :

  1. ভেরিয়েবলটি গেট-ডেট সেমিডলেটে পাস করুন : Get-Date -Format "HH:mm" $date

  2. টু স্ট্রিং () পদ্ধতিটি ব্যবহার করুন : $date.ToString("HH:mm")

  3. যৌগিক বিন্যাস ব্যবহার করুন : "{0:HH:mm}" -f $date


3

এইচটিটিপি শিরোনামে ব্যবহারের জন্য যে কেউ বর্তমান তারিখের ফর্ম্যাট করার চেষ্টা করছেন তাদের জন্য "আর" ফর্ম্যাটটি (আরএফসি 1123 এর জন্য সংক্ষিপ্ত) ব্যবহার করুন তবে সাবধানতা অবলম্বন করুন ...

PS C:\Users\Me> (get-date).toString("r")
Thu, 16 May 2019 09:20:13 GMT
PS C:\Users\Me> get-date -format r
Thu, 16 May 2019 09:21:01 GMT
PS C:\Users\Me> (get-date).ToUniversalTime().toString("r")
Thu, 16 May 2019 16:21:37 GMT

অর্থাৎ "টু ইউনিভার্সালটাইম ()" ব্যবহার করতে ভুলবেন না


এটি "
xML
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.