DateTime和字符串转换问题
2014-11-02 17:40
225 查看
DateTime和string之间的相互转换经常碰到,可就这么简单的一个转换其中也有些需要注意的地方.
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);
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);
相关文章推荐
- 对于字符串向smalldatetime转换失败问题的解决
- 对于字符串向smalldatetime转换失败问题的解决
- 从字符串转换为datetime时发生语法错误
- 字符数组转换字符串,字符串数组转换为字符串的问题
- 从字符串转换为 datetime 时发生语法错误
- C语言中字符串转换浮点数的问题
- 关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法
- 将字符串型转换成datetime类型,字符串可以为各国语言
- 关于SQL Server中将数值类型转换为字符串的问题
- 字符串转换到指定格式的宽字符 - 回复 "厨师" 的问题
- [笔记]读取含日期格式的记录SQLite报错"该字符串未被识别为有效的 DateTime"的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 从字符串转换为 datetime 时发生语法错误
- 关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法
- javascript的字符串转换为数字的问题
- 把流中的字符串转换为 UTF 格式 - 回复 "lostapple" 的问题
- 使用字节与字符串转换时需要注意的问题
- 字符串转换为无符号整数(unsigned int)的问题
- 关于动态数组、静态数组转换为字符串的一些问题 - 给 "厨师" 的回复
- 由递归所想到的:如何将字符串或者数字转换成大写货币的问题