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

PowerShell中如何将字符串转换并显示为24小时制日期?

解决PowerShell中Datetime对象24小时制显示问题

你的问题核心在于对Datetime对象的存储和显示逻辑理解有误:Datetime对象本身只存储时间的数值信息,并不保存显示格式。当你把格式化后的字符串再次转换回[datetime]类型时,之前的格式设置就被丢弃了,PowerShell会用系统默认的日期格式来输出这个对象。

先分析你代码里的问题

$fromtime = '2018-03-28,23:37:50'
# 这里你先把字符串转成Datetime,再ToString得到24小时制字符串
# 但紧接着又把这个字符串转回了Datetime类型,等于白做了格式转换
[datetime]$fromtime24hrFormat = ([datetime]$fromtime).ToString("yyyy-MM-dd,HH:mm:ss")
$fromtime24hrFormat # 输出的是Datetime对象的默认长格式

给你三个可行的解决方案

方案1:直接保留格式化后的字符串(最简单)

如果你的需求只是得到24小时制格式的文本,不需要Datetime对象,直接保留ToString的结果即可:

$fromtime = '2018-03-28,23:37:50'
# 转成Datetime后直接格式化并保存为字符串
$fromtime24hrString = ([datetime]$fromtime).ToString("yyyy-MM-dd,HH:mm:ss")
$fromtime24hrString # 输出:2018-03-28,23:37:50

方案2:保留Datetime对象,输出时指定格式

如果需要保留Datetime对象用于后续操作,只需要在输出的时候指定显示格式:

$fromtime = '2018-03-28,23:37:50'
$fromtimeDateTime = [datetime]$fromtime

# 方法1:用ToString指定格式
$fromtimeDateTime.ToString("yyyy-MM-dd,HH:mm:ss")

# 方法2:用PowerShell格式运算符(更灵活)
"{0:yyyy-MM-dd,HH:mm:ss}" -f $fromtimeDateTime

方案3:临时修改会话的日期显示格式(全局生效)

如果希望当前PowerShell会话中所有Datetime对象都默认以24小时制显示,可以修改当前文化的日期格式:

# 修改当前会话的日期时间格式
$culture = Get-Culture
$culture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"
$culture.DateTimeFormat.LongTimePattern = "HH:mm:ss"
$culture.DateTimeFormat.FullDateTimePattern = "yyyy-MM-dd,HH:mm:ss"
Set-Culture $culture

# 之后输出Datetime对象就会用新格式
$fromtime = '2018-03-28,23:37:50'
$fromtimeDateTime = [datetime]$fromtime
$fromtimeDateTime # 输出:2018-03-28,23:37:50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:46:22