【问题标题】:ASP.Net DateTime with CultureInfo带有 CultureInfo 的 ASP.Net 日期时间
【发布时间】:2011-03-02 13:03:31
【问题描述】:

一个一般性问题:

DateTime 对象是否存储了 CultureInfo,还是需要使用 Formatter 根据当前的文化来格式化 DateTime?

我有一个返回 DateTime 的类属性。在该属性中,我使用 CultureInfo 对象设置具有当前文化信息的 DateTime 对象。下面是我正在使用的类属性的代码:

public DateTime PrintedQuoteDate { 
    get {
        DateTime printQuoteDate = DateTime.Today;
        // cInfo = CultureInfo object                             

        return Convert.ToDateTime(printQuoteDate , cInfo);

    }
}

所以我的问题是,当我将在我的代码中使用上述属性时,它是否具有我在其 get 方法中设置的相应文化信息,或者我将不得不使用相同的 CONVERT 代码来格式化日期时间。这里的限制是属性应该只返回 DateTime 类型。

任何想法,建议

【问题讨论】:

    标签: c# datetime globalization cultureinfo


    【解决方案1】:

    DateTime 从来没有存储任何文化。事实上,它甚至不包含对 TimeZone 的引用,它所知道的只是它是否是 UTC DateTime。这由内部枚举处理。

    使用DateTime的ToString方法时需要指定一个格式提供者(每个文化本身就是一个格式提供者),否则会使用当前的文化(真的是文化而不是UI文化)线程。

    您可以通过使用 ISO 国家/地区代码来获得预定义的文化,如下所示:

    var us = new CultureInfo("en-US");
    var british = new CultureInfo("en-GB");
    var danish = new CultureInfo("da");
    

    正如您看到的丹麦语,指定语言就足够了,因为没有其他语言环境(据我所知)。

    【讨论】:

    • 旁注:即使您不提供区域信息,“en”或“fr”也能正常工作,存在某种后备机制。
    • true,但在格式化 DateTimes 时它们缺少重要信息,例如适当的日期格式:美国是 MM/DD/YY,而英国是 DD/MM/YY,我强烈建议不要使用格式化日期时的回退,你得到的只是翻译的日期名称和缩写,如果你不显示日期名称,通用文化信息实际上对你没有任何作用。
    • 我很好奇它是否可以与日期一起存储。不管怎样,谢谢你的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多