DateTime 将字符串解析为 DateTime mm/dd/yyyy

DateTime Parsing string to DateTime mm/dd/yyyy

提问人:wax 提问时间:10/31/2023 更新时间:10/31/2023 访问量:68

问:

我在 API 测试中遇到了一个特殊的问题。我正在使用一个模型,并有一组用于测试目的的示例:

[“ABC”, “Test1”, “04/17/1961”] [“def”, “test2”, “05/23/1995”] 对于这些情况,DateOfBirth 正确通过。但是,当我通过时:

[“GHI”, “Test3”, “10/12/1994”] [“jkl”, “test4”, “12/10/1994”] 对于 test3,出生日期显示为 12/10/1994,对于测试 4,出生日期显示为 10/12/1994。奇怪的是,在某些情况下,MM/dd 格式似乎正在切换。

我正在寻求帮助,以找出可能导致这种情况的原因,以及如何在不更改 DateTime 格式的情况下将字符串解析为 DateTime。

这是我正在使用的模型的片段:

[Route("/Some routing", Verbs = "GET")]
public class GetSomeInfo : IReturn<ReturnSomeInfo>
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
}
C# 日期时间

评论

2赞 ps2goat 10/31/2023
这取决于服务器上使用的区域性,或者可能取决于您的计算机(如果这是您正在测试的地方)。我猜在美国/北美以外的某个地方?(例如,我相信,使用文化 DD/MM/YYYY。解析器/模型绑定器中的逻辑足够聪明,可以知道没有一个月或这样的东西,所以它会为你翻转这些。我的建议是使用 ISO 8601 日期时间标准传递值,因为它在任何地方都是一样的(如果需要,还可以传递时间)。字符串不会转换为日期,因此您必须稍后添加解析。en-GB1723YYYY-DD-MM
0赞 ps2goat 10/31/2023
如果要将其保留为模型上的日期/日期时间,则有一个概念相似的旧问题,尽管当前答案可能因目标 C# 版本(5+ [核心]或 .NET Framework [4.x])而异
0赞 Rand Random 10/31/2023
m = 分钟,M = 月 - learn.microsoft.com/en-us/dotnet/standard/base-types/...
1赞 lidqy 10/31/2023
当区域性期望“dd/MM/yyyy”并且值为“04/27/2023”时,解析器应该抛出而不是智能。

答: 暂无答案