You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅修改System.DateTime对象的时间部分?PowerShell技术问询

如何仅修改PowerShell中已有System.DateTime对象的时间部分?

首先得明确一个关键点:System.DateTime是不可变类型,也就是说你没法直接修改已有对象的时分秒属性,只能基于原对象的日期部分,创建一个新的DateTime对象来达到目的。下面给你几个实用的方法,完美适配你的需求:

方法1:直接创建新的DateTime实例(最直观)

基于原日期的年、月、日,加上你想要的时分秒,直接构造新对象:

# 假设这是你的原日期对象
$originalDate = Get-Date "2018-01-14 13:54:15"

# 生成当天08:00:00的新对象
$newStartDate = [DateTime]::new($originalDate.Year, $originalDate.Month, $originalDate.Day, 8, 0, 0)
# 生成当天17:00:00的新对象
$newEndDate = [DateTime]::new($originalDate.Year, $originalDate.Month, $originalDate.Day, 17, 0, 0)

方法2:利用Date属性+TimeSpan(更简洁)

DateTime的Date属性会返回该日期的00:00:00时间点,再加上对应的TimeSpan就能快速设置目标时间:

$originalDate = Get-Date "2018-01-14 13:54:15"

# 叠加8小时的时间跨度,得到08:00:00
$startTime = $originalDate.Date + [TimeSpan]::FromHours(8)
# 叠加17小时的时间跨度,得到17:00:00
$endTime = $originalDate.Date + [TimeSpan]::FromHours(17)

这种写法代码更短,可读性也很强,非常适合批量处理日期的场景。

修正你之前的ParseExact用法

你之前尝试用ParseExact但失败了,是因为调用方式不对——你直接调用了DateTime类的静态ParseExact方法,它默认会用当前日期来生成新对象,而不是你原有的日期。正确的做法是:只提取ParseExact解析出的时间部分,再和原日期的Date部分结合:

$originalDate = (Get-Date).AddDays(-7)
# 解析出目标时间的TimeSpan
$targetTime = [DateTime]::ParseExact("09:00","hh:mm",$null).TimeOfDay
# 原日期 + 目标时间
$newDate = $originalDate.Date + $targetTime

这样就能得到你想要的2018-01-10 09:00:00,而不是错误的17号了。

适配你的场景:批量处理日期对

结合你给出的示例,把每个日期对的时间改成08:00和17:00,可以这样写:

# 模拟你的输入日期数组
$inputDatePairs = @(
    [PSCustomObject]@{ Start = Get-Date "2018-01-14 13:54:15"; Stop = Get-Date "2018-01-14 13:54:15" },
    [PSCustomObject]@{ Start = Get-Date "2018-01-15 13:54:15"; Stop = Get-Date "2018-01-15 13:54:15" }
)

# 批量处理生成结果
$outputDatePairs = $inputDatePairs | ForEach-Object {
    [PSCustomObject]@{
        Start = $_.Start.Date + [TimeSpan]::FromHours(8)
        Stop = $_.Stop.Date + [TimeSpan]::FromHours(17)
    }
}

# 输出结果
$outputDatePairs

执行后就能得到你期望的输出:

Start                Stop
-----                ----
2018-01-14 08:00:00 2018-01-14 17:00:00
2018-01-15 08:00:00 2018-01-15 17:00:00

内容的提问来源于stack exchange,提问作者Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:32:54