c#在不同的文化中转换日期时间

时间:2015-07-01 15:29:36

标签: c# datetime

我正在尝试将德语DateTime值转换为法语DateTime对象。

我的项目“_dateFacture”的值是“08.07.2015 17:23:01”

var stringdate = _dateFacture.ToString(new CultureInfo("fr-FR")); //d2 = "08/07/2015 17:23:01"
var testfinal = DateTime.Parse(stringdate, new CultureInfo("fr-FR")); // testfinal = "08.07.2015 17:23:01"

对象testfinal如何获得这样的值?

3 个答案:

答案 0 :(得分:2)

如果你已经使用每个变量声明了数据类型,而不是使用var,那么它就更容易被发现。

  string stringdate = _dateFacture.ToString(new CultureInfo("fr-FR")); 

  DateTime testfinal = DateTime.Parse(stringdate, new CultureInfo("fr-FR")); 

testfinal是DateTime,而不是字符串。

当您在调试器或视图中查看它时,testfinal将使用DateTime.ToString()转换为字符串,该字符串使用当前文化(可能显示带点的日期)。

答案 1 :(得分:1)

你看到的只是一个代表问题。它们的DateTime值相同。

DateTime没有任何隐式格式。并且它没有任何 IFormatProvider。它只是一个日期和时间值。当您尝试获取文本表示时,格式只是一个主题。

我强烈怀疑你在调试器中看到了这个;或者

enter image description here

您的stringdatestring,但您的testfinalDateTime。如果要在数据库中保存日期时间值,请不要保存其字符串表示形式。将您的日期时间值直接放入参数化查询。

阅读:Bad habits to kick : choosing the wrong data type

答案 2 :(得分:0)

如果你想将testfinal存储为日期时间,你只需要确保你的var实际上是一个DateTime。

DateTime testfinal = DateTime.Parse(stringdate, new CultureInfo("fr-FR")); 

要显示它,您可以使用ToString函数中的格式:

string formattedDate = testfinal.ToString("dd.MM.yyyy HH:mm:ss");
//now your formattedDate  will be "08.07.2015 17:23:01"