我试图在Powershell中输出一个时间戳来表示现在的时间(向下舍入到00秒),另一个表示在此之前30分钟。两个时间戳都应格式化为yyyy-mm-ddThh:mm:ss
。
如果我在设置$end_time
时仅使用Get-Date,那么$start_time
也会设置。
$end_time = Get-Date
$start_time = $end_time.AddMinutes(-30)
但是,当我根据需要格式化$end_time
时,设置$start_time
时会出错。看起来调用-Format
会将日期作为字符串而不是日期对象返回。
$end_time = Get-Date -Format s -Second 00
$start_time = $end_time.AddMinutes(-30)
方法调用失败,因为[System.String]不包含方法 命名' addminutes'。
为了尝试解决这个缺点,我添加了一个$date
变量,但现在我甚至无法设置$end_time
。我想这是因为格式是由Get-Date函数返回的,不能追溯设置。
$date = Get-Date
$end_time = $date -Format s -Second 00
意外的令牌' -Format'在表达或陈述中。
所以我的问题是:如果我无法操作格式化的日期,并且如果我无法将预先生成的日期格式化为需要,那么如何生成两个相隔30分钟的时间戳(一个用于&#39 ;现在',一个30分钟之前),格式为yyyy-mm-ddThh:mm:ss
?
答案 0 :(得分:2)
而不是使用-Format
的{{1}}参数,而是在您创建的日期对象上使用Get-Date
方法:
.ToString
<强>解释强>
$Date = Get-Date -Second 0
$Date.ToString("yyyy-MM-ddTHH:mm:ss")
$Date.AddMinutes(-30).ToString("yyyy-MM-ddTHH:mm:ss")
方法删除30分钟。答案 1 :(得分:1)
将$date
保留为datetime
,根据需要使用ToString
:
$date = Get-date -second 0
$end_time = $date.ToString("yyyy-MM-ddTHH:mm:ss")
$start_time = ($date.AddMinutes(-30)).ToString("yyyy-MM-ddTHH:mm:ss")