将DateTime转换为字符串

我想将DateTime转换为String

检查以下代码。

 namespace TestDateConvertion { class Program { static void Main(string[] args) { object value = new DateTime(2003,12,23,6,22,30); DateTime result = (DateTime)value; Console.WriteLine(result.ToString("dd/MM/yyyy")); Console.ReadLine(); } } } 

我已将系统日期格式更改为Faeroese。

我得到的输出为

23-12-2013

我应该如何获得输出?

23/12/2013

并考虑另一种情况,假设我有一个Customculture Info,我想将我的日期转换为我的自定义文化,我之前做的是如下,

 string.Format(customCulture, "{0:G}", result); 

现在如何使用customCulture在字符串中获取日期时间,它不应该依赖于系统DateTime?

看起来你的文化的日期分隔符是-并且正如蒂姆指出的那样 /替换它自己。

您应该使用CultureInfo.InvariantCulture作为result.ToString()方法中的第二个参数。

获取与文化无关 (不变)的CultureInfo对象。

 object value = new DateTime(2003, 12, 23, 6, 22, 30); DateTime result = (DateTime)value; Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 

输出将是;

 23/12/2003 

这是一个DEMO

试试这个

 Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 

你需要添加它

 Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); 

现在你的代码变成了

 object value = new DateTime(2003, 12, 23, 6, 22, 30); DateTime result = (DateTime)value; Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)); Console.ReadLine(); 

注意 * 使用System.Globalization添加; *

你可以使用不变的文化:

 Console.WriteLine( result.ToString("dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture ); 

尝试

 string.Format("{0:dd/MM/yyyy}",result) 

祝好运

翅膀

我完全同意Tim Schmelter的评论和SonerGönül的回答。 只是想补充一点,当你使用日期时间格式时,你应该指定文化,因为默认文化将来自Thread.CurrentThread.CurrentCulture (在Control Panel->Region and Languages->Format设置的文化),这意味着与不同设置您的输入将是不同的。

看看你的不同文化的例子:

 object value = new DateTime(2003, 12, 23, 6, 22, 30); DateTime result = (DateTime)value; foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures)) { Console.WriteLine(result.ToString("dd/MM/yyyy", culture)); } 

‘/’是一个特殊字符,表示“区域设置日期分隔符”。 如果你想像普通的char一样使用它,你可以使用引号图’\’来引用它。例如:

 DateTime.Now.ToString(@"dd\/MM\/yyyy")