首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么DateTime.ParseExact(String,String,IFormatProvider)需要IFormatProvider?

为什么DateTime.ParseExact(String,String,IFormatProvider)需要IFormatProvider?
EN

Stack Overflow用户
提问于 2013-09-23 14:13:17
回答 1查看 70.3K关注 0票数 59

如果我们使用ParseExact方法进行精确的日期-时间解析,使用指定的格式,为什么我们需要提供一个IFormatProvider对象?它背后的意义是什么?

例如:

代码语言:javascript
复制
DateTime.ParseExact(dateString, format, provider);

我们为什么在这里需要provider

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-23 14:15:59

为什么我们需要提供一个IFormatProvider对象?它背后的意义是什么?

它允许特定于文化的选项。特别是:

  • 您使用的格式可以是标准日期/时间格式,这意味着不同区域性中的不同模式。
  • 您可以在模式中使用:/,这意味着时间分隔符或日期分隔符分别具有特定于区域性的字符。
  • 在解析月名和日名时,这些名称显然依赖于区域性。
  • 区域性也决定默认日历,这将影响结果。

作为最后一点的一个例子,考虑相同的字符串和格式,在美国或沙特阿拉伯的文化中解释:

代码语言:javascript
复制
using System;
using System.Globalization;

class Test
{
    static void Main()        
    {
        CultureInfo us = new CultureInfo("en-US");
        CultureInfo sa = new CultureInfo("ar-SA");
        string text = "1434-09-23T15:16";
        string format = "yyyy'-'MM'-'dd'T'HH':'mm";
        Console.WriteLine(DateTime.ParseExact(text, format, us));
        Console.WriteLine(DateTime.ParseExact(text, format, sa));
    }
} 

在分析美国文化时,使用公历--而在分析沙特阿拉伯文化时,则使用Um Al Qura日历,其中1434年是我们目前所处的年份(在我写这个答案时)。

票数 71
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18961520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档