Powershell:将日期更改为 int?
Powershell: Change date to int?
我有一个 cmdlet 需要 int32
作为日期而不是规范化输入。
Set-CTXGroupPolicyConfiguration
、RebootScheduleStartDate
需要 int32
-输入。例如,如果我手动将其输入到策略中,明天 1/18/2015
为 132055314
。不知道这个数字指的是什么。
这很有趣。我找到了这个 Citrix Support 网站,他们在其中描述了如何将日期存储为注册表中的 dword (uint32) 值。双字值的创建方式如下:
- 日期分为年月日
- 每个值都转换为十六进制值
- 十六进制值(16 位年、8 位月、8 位日)以模式
yyyyMMdd
组合
- 组合的十六进制值转换为十进制
我创建了几个函数来为您转换日期:
function ConvertFrom-DwordDate([int32]$DwordValue) {
#Ex. $DwordValue = 132055314
#Convert to hex with 8 chars (16bit year + 8bit month + 8bit day)
$hex = $DwordValue.ToString('X8')
#Ex. $hex = 0x07df0112 = 0x07df(year) 0x01 (month) 0x12 (day)
#Convert to date string
$datestring = '{0:D4}\{1:D2}\{2:D2}' -f [convert]::ToUInt32($hex.Substring(0,4),16), [convert]::ToUInt32($hex.Substring(4,2),16), [convert]::ToUInt32($hex.Substring(6,2),16)
#Convert to datetime and output
$datetime = [datetime]::ParseExact($datestring,'yyyy\MM\dd',$null)
#Output
$datetime
}
function ConvertTo-DwordDate([datetime]$Date) {
#Convert to combined hex
$combinedhex = '{0:X}{1:X2}{2:X2}' -f $Date.Year, $Date.Month, $Date.Day
#Convert to decimal
$decimal = [convert]::ToUInt32($combinedhex,16)
#Ouput
$decimal
}
ConvertTo-DwordDate -Date (Get-Date).AddDays(1)
132055314
ConvertFrom-DwordDate -DwordValue 132055314
søndag 18. januar 2015 00.00.00
我知道这是一个荒谬的旧 post 但它是 Google 上对“powershell get-date as int”的最高响应。
$DateInt = [Int]((Get-Date).addDays(-100).ToString('yyyyMMdd'))
我有一个 cmdlet 需要 int32
作为日期而不是规范化输入。
Set-CTXGroupPolicyConfiguration
、RebootScheduleStartDate
需要 int32
-输入。例如,如果我手动将其输入到策略中,明天 1/18/2015
为 132055314
。不知道这个数字指的是什么。
这很有趣。我找到了这个 Citrix Support 网站,他们在其中描述了如何将日期存储为注册表中的 dword (uint32) 值。双字值的创建方式如下:
- 日期分为年月日
- 每个值都转换为十六进制值
- 十六进制值(16 位年、8 位月、8 位日)以模式
yyyyMMdd
组合
- 组合的十六进制值转换为十进制
我创建了几个函数来为您转换日期:
function ConvertFrom-DwordDate([int32]$DwordValue) {
#Ex. $DwordValue = 132055314
#Convert to hex with 8 chars (16bit year + 8bit month + 8bit day)
$hex = $DwordValue.ToString('X8')
#Ex. $hex = 0x07df0112 = 0x07df(year) 0x01 (month) 0x12 (day)
#Convert to date string
$datestring = '{0:D4}\{1:D2}\{2:D2}' -f [convert]::ToUInt32($hex.Substring(0,4),16), [convert]::ToUInt32($hex.Substring(4,2),16), [convert]::ToUInt32($hex.Substring(6,2),16)
#Convert to datetime and output
$datetime = [datetime]::ParseExact($datestring,'yyyy\MM\dd',$null)
#Output
$datetime
}
function ConvertTo-DwordDate([datetime]$Date) {
#Convert to combined hex
$combinedhex = '{0:X}{1:X2}{2:X2}' -f $Date.Year, $Date.Month, $Date.Day
#Convert to decimal
$decimal = [convert]::ToUInt32($combinedhex,16)
#Ouput
$decimal
}
ConvertTo-DwordDate -Date (Get-Date).AddDays(1)
132055314
ConvertFrom-DwordDate -DwordValue 132055314
søndag 18. januar 2015 00.00.00
我知道这是一个荒谬的旧 post 但它是 Google 上对“powershell get-date as int”的最高响应。
$DateInt = [Int]((Get-Date).addDays(-100).ToString('yyyyMMdd'))