将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")