如何指定输入字符串的哪个部分是日期和月份?
如果输入为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
答案 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();
}