Powershell -join在单个[DateTime]上忽略当前的文化信息

时间:2014-08-21 11:01:59

标签: datetime powershell

我发现了一个奇怪的Powershell(v2)行为,我试图找到修复或解决方法。 我系统上的当前文化是en-GB,日期格式为dd / mm / yyyy,如果我运行它就证明了这一点:

[PS] H:\Powershell>(get-date).tostring()
21/08/2014 11:30:51

如果我有一个[DateTime]对象数组,并尝试加入它们,则会再次保留此文化信息。

[PS] H:\Powershell>$a=@((get-date),(get-date))
[PS] H:\Powershell>$a

21 August 2014 11:33:53
21 August 2014 11:33:53

[PS] H:\Powershell>$a -join ";"
21/08/2014 11:33:53;21/08/2014 11:33:53

但是,如果对象是单例,则文化信息将丢失,格式将恢复为mm / dd / yyyy:

[PS] H:\Powershell>$a[0] -join ";"
08/21/2014 11:33:53

这证明是一个问题,因为我有一些属性,一些单个,一个对象中的一些数组,我导出到csv。作为一个包罗万象,我正在运行一个" -join"所有人都认为单身人士不应该受到影响,但他们显然是。

有没有办法使用-join运算符强制文化或者我发现了一个错误?我没有检查过V4,但这发生在2和3

1 个答案:

答案 0 :(得分:0)

答案是正确地盯着我,将标量值包装在数组中,-join按预期工作。

[PS] H:\Powershell>@(get-date) -join ";"
21/08/2014 12:31:14