![](/img/trans.png)
[英]Changing the date format with PowerShell, format resets after rebooting?
[英]Powershell Variable issue and changing date format
我在Powershell中发生了一件非常奇怪的事情。
这是代码:
add-pssnapin windows.serverbackup
$wbs = Get-Wbsummary
$lastbackuptime = $wbs.lastBackupTime
$solution = "Windows Server Backup"
$surl = "https://REDACTED:1338/REDACTED.asp?querysolution=$solution&querylastbackuptime=$lastbackuptime"
write-host $surl
write-host $lastbackuptime
这是我运行此命令时输出的内容
https://REDACTED:1338/REDACTED.asp?querysolution=Windows Server Backup&querylastbackuptime=05/07/2013 05:04:12
07/05/2013 05:04:12
为什么当将Powershell作为另一个变量的一部分而不是自己输出变量时,PowerShell会交换日期?
这是投射datetime
对象的特殊情况。 当您使用write-host
简单地将日期打印为字符串时,将等于运行$lastbackuptime.toString()
。 此方法使用您的计算机文化。 就我而言,Windows的“区域设置”中的区域性是挪威,因此我得到了“欧洲”日期格式: dd/mm/yyyy
。
然而,当你包括$lastbackuptime
在字符串中,它执行强制转换为string
-object。 在PowerShell(或.Net)中,已决定在投射日期时间对象时,应使用标准格式将其转换为字符串,以便无论配置何种计算机的区域性代码都可以运行相同的代码。 这就是为什么强制转换为您提供美国格式,而toString()
和Write-Host
提供“欧洲”格式的原因
例如:
[16:07:43] PS-ADMIN C:\> $d.tostring()
07.05.2013 16:04:17
[16:13:05] PS-ADMIN C:\> write-host $d
07.05.2013 16:04:17
[16:13:12] PS-ADMIN C:\> [string]$d
05/07/2013 16:04:17
要指定日期时间应显示的格式,可以执行以下操作:
[16:14:28] PS-ADMIN C:\> $d.tostring("dd/MM/yyyy")
07.05.2013
[16:14:34] PS-ADMIN C:\> "examplestring $($d.tostring("dd/MM/yyyy"))"
examplestring 07.05.2013
在这里阅读更多
检查您的区域设置,特别是短日期和长日期格式。
在我的系统上,Short Date是MM/dd/yyyy
,Long Date是dddd, MMMM dd,yyyy
。 然后,运行示例的简化版本:
>$lastbackuptime = get-date;
>$lastbackuptime
Tuesday, May 07, 2013 10:07:42
>$url="http://whatever/redacted.asp?time=$lastbackuptime";
>$url
http://whatever/redacted.asp?time=05/07/2013 10:07:42
单独使用时,长日期格式用于返回日期,但是当与另一个字符串连接(或在其中扩展)时,则使用短日期格式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.