获取日期格式/文化

时间:2017-06-20 13:11:40

标签: powershell datetime powershell-v2.0

如何指定输入字符串的哪个部分是日期和月份?

如果输入为01/10/2017,则可以将其视为 2017年10月1日 2017年1月10日。两者都是正确的。

我希望明确01是日期而10是月份,因此无论语言环境和时间格式如何,我都可以获得一致的结果。

示例代码:

get-date  -Date '01/10/2017'

输出结果为:

Tuesday, January 10, 2017 12:00:00 AM

所需的输出是:

Sunday, October 01, 2017 12:00:00 AM

4 个答案:

答案 0 :(得分:2)

我有一个解决方案。它要求将文化作为论据之一。

([datetime]::ParseExact($date,"dd/MM/yyyy",[Globalization.CultureInfo]::CreateSpecificCulture('en-GB')))

不必指定文化。但是,它的论据确实存在,否则你会得到一个错误:

  

找不到" ParseExact"的重载和参数计数:" 2"。

[cultureinfo]::InvariantCulture$null可用作第三个参数:

$date = "01/10/2017"
[datetime]::ParseExact($date, "dd/MM/yyyy", [cultureinfo]::InvariantCulture)
[datetime]::ParseExact($date, "dd/MM/yyyy", $null)

所有三种情况下的输出

01 October 2017 00:00:00

答案 1 :(得分:2)

试试这个:

Get-Date(Get-Date -Date $date -Format 'dd/MM/yyyy')

答案 2 :(得分:1)

阅读文档或在PowerShell控制台中运行Get-Help Get-Date

您应该阅读MSDN上涵盖Get-Date PowerShell cmdlet的文档,并提供所有必要的示例。仔细查看Parameters部分。

答案 3 :(得分:0)

您可以对单个命令(或命令块)强制执行区域性。这应该有助于避免日期混乱。


@Autowired Dao dao;

public ResultSetList getResultSetList(String f, String t) {
    ResultSetList res = dao.getResultst(f, t);
    return res;
}

@Mock
private ResultSet rs;

@Test
public void testGetResultSetList() {
    ResultSetList rsl = new ResultSetList(rs, 0, 0, true); // npe here

    Mockito.when(dao.getResults(any(), any())).thenReturn(rsl);

    ResultSetList rsFinal = service.getResultSetList("", "");

    Assertions.assertThat(rsFinal).isNotNull();
}