如何将DateTime值格式化为其他区域性的FullDateTimeFormat?
解决DateTime按指定区域性FullDateTime格式输出的问题
你的核心问题是用错了方法:[datetime]::ParseExact的作用是将字符串解析为DateTime对象,而你需要的是把DateTime对象格式化为指定区域性的字符串,正确的做法是使用DateTime.ToString()的重载方法。
正确实现代码
方法1:使用格式符'F'并指定区域性
这种方式直接调用ToString,传入格式符'F'(对应FullDateTime格式)和目标区域性对象,会自动适配该区域性的格式配置(包括手动修改后的设置):
$date = [datetime]::new(2022,2,28,10,33,0) $de = [cultureInfo]::new('de-DE') $date.ToString('F', $de) # 输出结果:Montag, 28. Februar 2022 10:33:00
方法2:直接使用区域性的FullDateTimePattern
如果想显式使用该区域性的FullDateTimePattern作为格式字符串,效果和方法1完全一致:
$date.ToString($de.DateTimeFormat.FullDateTimePattern, $de)
原代码报错原因
你传入ParseExact的第一个参数是$date(DateTime对象),但该方法要求第一个参数必须是待解析的字符串,类型不匹配导致报错。这个方法是格式化操作的反向流程,不适合你的需求。
内容的提问来源于stack exchange,提问作者Carsten
相关产品推荐
相关产品推荐

