您的位置:首页 > 其它

DateTime和字符串转换问题

2014-11-02 17:40 225 查看
DateTime和string之间的相互转换经常碰到,可就这么简单的一个转换其中也有些需要注意的地方.

static void Main(string[] args)
{
string format = @"yyyy/MM/dd HH:mm:ss";
DateTimeFormatInfo dtfi = DateTimeFormatInfo.InvariantInfo;

DateTime dateTime = new DateTime(2014, 11, 2, 17, 30, 00);

string dateTimeStr1 = dateTime.ToString(format);
string dateTimeStr2 = dateTime.ToString(format, dtfi);

Console.WriteLine(Thread.CurrentThread.CurrentCulture.DisplayName);
Console.WriteLine(dateTimeStr1);
Console.WriteLine(dateTimeStr2);

DateTime dateTimeResult;
Console.WriteLine(DateTime.TryParseExact(dateTimeStr1, format, null, DateTimeStyles.None, out dateTimeResult));
Console.WriteLine(DateTime.TryParseExact(dateTimeStr2, format, dtfi, DateTimeStyles.None, out dateTimeResult));

Console.ReadLine();
}


View Code
dateTime.ToString(format)如果不传第二个参数,那么将会使用当前线程的区域设置,使格式化的结果依赖于本机的区域设置.

DateTime.TryParseExact(dateTimeStr1, format, null, DateTimeStyles.None, out dateTimeResult),第三个参数如果为null,也会使用当前线程的区域设置.

由于不能保证所有机器的区域设置都一样,上面两句代码可能会得不到预期的结果.

可以使用特定的区域设置来解决这个问题,或者直接将转换设置为和区域设置无关,完全由代码控制.

DateTimeFormatInfo dtfi = DateTimeFormatInfo.InvariantInfo;

string dateTimeStr2 = dateTime.ToString(format, dtfi);

DateTime.TryParseExact(dateTimeStr2, format, dtfi, DateTimeStyles.None, out dateTimeResult);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: