2009-12-07 13 views
8

प्राप्त करने के लिए मैं एक पाठ के लिए एक तिथि संलग्न करने के लिए निम्न का उपयोग कर सकते हैं:उपयोग UFormat यूनिक्स समय

"Foo {0:G} Foo" -f (date)  #returns "Foo 2009-12-07 15:34:16 Foo" 

लेकिन मैं यूनिक्स प्रारूप में समय चाहते हैं। मैं इसे date -UFormat %s द्वारा प्राप्त कर सकता हूं, लेकिन क्या मैं उसी वाक्यविन्यास का उपयोग कर सकता हूं?

जब मैं -UFormat %s का उपयोग करता हूं तो मुझे 1260199855,65625 मिलता है, मैं दशमलव को कैसे हटा सकता हूं?

उत्तर

14

बस इतना की तरह किसी पूर्णांक पर परिणाम डाली:

PS> [int][double]::Parse((Get-Date -UFormat %s)) 
1260172909 

PS> "Foo {0:G} Foo" -f [int][double]::Parse((Get-Date -UFormat %s)) 
Foo 1260172997 Foo 

पार्स विधि उपयोग करने का अर्थ स्ट्रिंग "संस्कृति के बारे में पता" पार्स किया जाता है ताकि उपयुक्त दशमलव विभाजक चरित्र वर्तमान संस्कृति के लिए मान्यता प्राप्त है। यदि आप सीधे सीधे डाले हैं, तो PowerShell इनवेरिएंट संस्कृति का उपयोग करता है जो किसी भी संस्कृति के लिए समस्याएं पैदा करता है जहां दशमलव सीईपी चार अवधि नहीं है।

+0

अगर मैं का उपयोग [int] (मिल -डेट -उफोर्मेट% s), मुझे "सिस्टम" टाइप करने के लिए "123456789,12345" मान परिवर्तित नहीं कर सकता .Int32 "। त्रुटि: "इनपुट स्ट्रिंग सही प्रारूप में नहीं थी।" – magol

+0

हम्म, आश्चर्य है कि यह एक स्थानीयकरण बग है? –

+1

स्पष्ट रूप से, PowerShell एक स्ट्रिंग से किसी संख्या तक समन्वयित करते समय परिवर्तनीय संस्कृति का उपयोग करता है जिसका अर्थ केवल एक अवधि को दशमलव विभाजक चरित्र के रूप में पहचाना जाता है। मैंने समायोजन के जवाब को अद्यतन किया है। –

3

मेरे समाधान:

(Get-Date -UFormat %s) -Replace("[,\.]\d*", "") 
3

मैं ऐसा किया,

[System.Math]::Round((date -UFormat %s),0) 
+0

जब आप इसे देखते हैं तो एक स्पष्ट समाधान :-) – magol

4

को गिरफ्तार यहाँ कैसे मैं यह कर दिया गया है:

$DateTime = (Get-Date).ToUniversalTime() 
$UnixTimeStamp = [System.Math]::Truncate((Get-Date -Date $DateTime -UFormat %s)) 
+0

यह एकमात्र उत्तर है जो वास्तविक यूनिक्स टाइम स्टैम्प की गणना करता है (1 9 70-01-01 00:00:00 ** यूटीसी ** से सेकंड)। ध्यान दें कि .NET 4.6 के बाद से इसके लिए एक समर्पित विधि है: '([DateTimeOffset] (Get-Date))। ToUnixTimeSeconds()' – argonym