- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 ParseExact 方法的第一次重载中
public static DateTime ParseExact (string s, string format, IFormatProvider provider);
根据微软的说法:
If format is a custom format pattern that does not include date or time separators (such as "yyyyMMddHHmm"), use the invariant culture for the provider parameter and the widest form of each custom format specifier. For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".
特别是如果我们使用标准格式模式,我们可以使用任何其他文化
如果我们使用不包含日期或时间分隔符的自定义格式模式,那么使用不变文化和最宽自定义说明符的真正目的是什么?
最佳答案
InvariantCulture
的目的是采用一种不依赖于系统或用户区域设置的众所周知的方式来格式化日期和数字。
每次格式化不打算由人类解析的内容时,您都应该使用它。例如,在 JSON 或 XML 文件中,您希望以 ISO 格式存储日期,这样就不会出现歧义。另一方面,如果您在屏幕上显示日期,您通常会尊重用户的文化选择并以首选方式显示。
如果您使用自定义格式,那么如果可以将生成的字符串解析回完全相同的日期和时间,那肯定会很好。为了在没有分隔符的情况下做到这一点,您必须为每个组件使用固定长度的字符串。
// omitting CultureInfo.InvariantCulture for brevity
var dt = new DateTime(2018,1,2,3,45,6);
dt.ToString("yyyyMMddHHmmss") // returns "20180102034506"
dt.ToString("yyyyMdHms") // returns "2018123456"
您可以很容易地看出第二个不是唯一的,即还有其他日期将返回相同的字符串。为了避免您使用每个组件的更宽形式。
关于c# - 在 DateTime.ParseExact 中将不变文化与 IFormatProvider 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51820648/
如何指定输入字符串的哪一部分是日期和月份? 如果输入是 01/10/2017 ,这可以读作 2017 年 10 月 1 日 和 2017 年 1 月 10 日 .两者都是正确的。 我想明确指出 01是
我的 silverlight 应用程序的数据网格中有一个日期列。我需要以 24 小时格式显示时间。为了实现这一点,我修改了 Application_Startup 事件中的 UI 区域性,如下所示:
对于 CultureInfo,调用 DateTimeFormat.AbbreviatedMonthNames 会返回一个数组,其中每个月都以 . 结束,例如 ['jan .',... 'dis.'].
最近,DevOps的采用导致了企业计算的重大转变。除无服务器计算,动态配置和即付即用成本模型之类的功能外,DevOps的实践对于组织可以发挥一些增值效益,例如提高敏捷性,速度和降低成本,也非常有用。
我一直在努力改变 numbro 的文化。我尝试了简单的方法,但出现错误: Unknown culture : ' + code numbro.culture('fr-FR'); 我尝试过这样的: co
有一个 mvc web 应用程序,CSS 在样式表中编码,将在 View 中使用。 有什么办法可以实现下面的场景: When there is a change of language culture
我的 .NET 4.0 项目中嵌入了字符串资源:Strings.resx 和 Strings.de.resx。 在生产代码中,根据 Strings.Culture 的值检索正确的本地化字符串: Str
如何本地化除今天以外的星期几? 以下内容适用于当天: DateTime.Now.ToString("dddd", new CultureInfo("it-IT")); 但是我怎样才能本地化一周中的所有
你好,我想看看是否有更好的方法将字符串解析为涵盖各种格式的 Decimal 1.30 美元 1.50 英镑 2,50 欧元 2,50 € 2.500,00 € 我看到很多用culture来转换. &
你好,我想看看是否有更好的方法将字符串解析为涵盖各种格式的 Decimal 1.30 美元 1.50 英镑 2,50 欧元 2,50 € 2.500,00 € 我看到很多用culture来转换. &
我的应用程序的每个用户都会选择他们的国家/地区,然后将其存储在 cookie 中并存储以供以后请求。一切正常,但我需要在 session 开始时设置文化。我目前正在尝试将 web.config 中的区
我有一个 CLR .NET dll 和 SQL 服务器。系统本地设置(Region/administrative/locallanaguagesettings)从 en-IN 更改为 en-US。但是
你好, 我正在使用 Windows XP sp2 作为我的开发平台, 我在显示 时遇到问题货币符号 . 你看,对于马来西亚来说,正确的货币符号是 RM , 但是当我使用 uiCulture="ms"c
我用 C# 编写了一个报告渲染器,它运行报告并将报告附加到电子邮件中。这一切都很好,除了在报告标题中列出的参数的日期格式不正确。所有报告的语言都设置为 =User!Language 并且使用 Form
这应该很简单,但我似乎找不到这个问题的答案...... 我正在使用 Visual Studio 2008 开发 C# 应用程序,该应用程序支持多种不同的语言。在开发机器上测试不同的语言很简单(例如临时
我正在尝试运行这条确切的线,但它不工作。有谁知道原因吗? Convert.ToBoolean("verdadero", new System.Globalization.CultureInfo("ES
我对数据库编程不是很熟悉,但我有一个Mysql数据库,我在C#下使用Dblinq访问它。现在,当我输入日期、数字等时,使用英语符号,但我的客户需要德语。如何将我的数据库从英语切换为德语? (数据库仍然
我正在尝试使用以下方法更改内置的 .Net 区域性 fr-CA: CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuild
我的 orderby linq 表达式有问题。它以错误的顺序生成输出。我来自丹麦并创建了一个丹麦语网站,因此订单必须准确无误。 这是我的查询: var model = (from w in db.Ne
是否可以即时更改 WinRT 中的 UI 文化?我找到了 ApplicationLanguages.PrimaryLanguageOverride = "en"; ,但这仅在显示应用程序 UI 之前有
我是一名优秀的程序员,十分优秀!