2011-03-02 68 views
1

的一个普遍问题:ASP.Net日期时间与CultureInfo的

是否DateTime对象存储的CultureInfo的,或者您需要使用格式化根据当前区域性格式化日期时间?

我有一个类属性,可以重新调用DateTime。在该属性中,我使用CultureInfo对象将当前文化信息设置为DateTime对象。下面是类属性的代码我使用:

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

     return Convert.ToDateTime(printQuoteDate , cInfo); 

    } 
} 

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

任何想法,建议

回答

1

DateTime不存储任何文化都没有。事实上,它甚至没有提及时区,只知道它是否是UTC DateTime。这由内部枚举来处理。

使用DateTime的ToString方法时,您需要指定格式提供程序(每种文化本身都是格式提供程序),否则它将使用当前线程的文化(实际上是文化而不是UI文化) 。

您可以通过使用这样的ISO国家/区域代码得到predifined文化:

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

正如你可以看到丹麦这是不够,因为没有其他语言环境指定的语言(我知识)。

+0

备注:即使您没有提供区域信息,“en”或“fr”也能正常工作,但有某种后备机制。 – Guillaume86 2011-03-02 13:31:02

+0

是真实的,但它们在格式化日期时间时丢失了至关重要的信息,例如相应的日期格式:美国是MM/DD/YY,而英国是DD/MM/YY,**强烈建议不要在格式化日期时使用后退* *,所有你得到的是翻译的日期名称和缩写,如果你不显示日期名称,那么通用文化信息实际上对你没有任何作用。 – ntziolis 2011-03-02 13:37:30

+0

我很好奇,如果这可以与日期一起存储。无论如何,感谢您的答复。 – user458135 2011-03-02 15:22:09