gpt4 book ai didi

c# - 使用 bg-BG 文化和 dd-MMM-yyyy 格式解析 11 月的日期时间。

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:41 24 4
gpt4 key购买 nike

我正在处理日期和时间的本地化代码,当文化设置为保加利亚语并且我传入的日期是 11 月时,我看到了一个奇怪的行为。

本质上,我正在尝试调用:

if (DateTime.TryParse(theDateToParse, formatProvider, DateTimeStyles.None, out localDate))
{ //Do code work here }

其中 theDateToParse = 15-Нов-2013 15:20:39(这个值来自一个 jquery 日期选择器,附加了一个时间,是 11 月 15 日)并且 formatProvider 是 bg-BG 文化信息。

测试其他值和其他文化时,问题似乎特定于 bg-BG 文化中 11 月的任何日期。此外,如果我将其更改为使用完整的月份名称,它可以正确解析它。

为了检验这一理论,我采用了另一种方法,为每个月的某一天创建了一个 dateTime 对象,并使用 dd-MMM-yyyy 格式将它们转换为字符串。对于每个月,我都有一个缩写的月份名称,除了 11 月,我有一个完整的月份名称。

我只是想看看是否有人知道为什么会发生这种情况,或者有任何聪明的解决方案来使这个案例奏效。我花了一些时间搜索,但我什至找不到遇到同样问题的人。

最佳答案

运行这段代码:

var culture = CultureInfo.CreateSpecificCulture("bg-BG");
foreach (var name in culture.DateTimeFormat.AbbreviatedMonthNames)
Debug.WriteLine(name);

给出这些月份名称的缩写:

яну фев мар апр май юни юли авг сеп окт ное дек

似乎 .Net 将保加利亚语中的 November 缩写为“ное”,而不是您输入的“Нов”字符串。

我不会说保加利亚语,但谷歌翻译将“ное”接受为“November”,但将“Нов”翻译成英语为“new”。所以我的猜测是源数据不正确。

最好的解决方案是永远不要在客户端和服务器之间将日期作为本地化字符串传输。相反,请使用 ISO8601 格式,例如 2013-11-15T15:20:39

关于c# - 使用 bg-BG 文化和 dd-MMM-yyyy 格式解析 11 月的日期时间。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17655920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com