博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于DateTime和String转换的容易犯得错误
阅读量:5127 次
发布时间:2019-06-13

本文共 912 字,大约阅读时间需要 3 分钟。

在开发中,常常会有DataTime类型和String类型的互相转换的要求,比较常用的写法是

var date = Convert.ToDateTime("2012/06/08 09:10:10");

 

 

咋一看这个代码好像没有什么问题, 实际运行也没发现问题。但是客户的机器上却是有转换的异常。

后来经过调查发现,客户电脑上系统设置的CultureInfo是西班牙。这样代码会认为2012/06/08 09:10:10 不是一个合法的日期字符串。

 

正确的写法应当是:

var dtFormat = new DateTimeFormatInfo {LongDatePattern = "yyyy/MM/dd hh:mm:ss"}; //指定以特定格式转换成DateTimevar date = Convert.ToDateTime("2012/06/08 09:10:10", _dtFormat)

 

 

DateTime转换成字符串

var dateString = System.DateTime.Now.ToString()

 

这样转换的字符串同样会根据运行的系统的CultureInfo不同而有不同格式的输出。

对于WCF, Web service, Ajax这样的客户端和服务端如果是不同的CultureInfo的情况下,非常容易出错。

 

在转换成字符串的时候,加上CultureInfo.InvariantCulture

var dateString = System.DateTime.Now.ToString(CultureInfo.InvariantCulture)

 

同时在从字符串转换回来的时候,

var date = DateTime.Parse(serverInfo.ServerDateTimeString, CultureInfo.InvariantCulture)

 

 

这个CultureInfo有点像英语格式,但它不和国家地区挂钩,它可以提供一个可靠的在多语言环境下的规范格式化

转载于:https://www.cnblogs.com/zcttxs/archive/2012/06/12/2546076.html

你可能感兴趣的文章
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
VMware Tools安装
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
zoj 2286 Sum of Divisors
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
OpenCV之响应鼠标(三):响应鼠标信息
查看>>
Android 画图之 Matrix(一)
查看>>
List<T>列表通用过滤模块设计
查看>>
【模板】最小生成树
查看>>
设计模式之结构型模式
查看>>
poj2569
查看>>
使用pygal_maps_world.i18n中数据画各大洲地图
查看>>
sql server必知多种日期函数时间格式转换
查看>>
jQuery EasyUI 的下拉选择combobox后台动态赋值
查看>>