关于DateTime和String转换的容易犯得错误

在开发中,常常会有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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...

基于AT89C1单片机C语言编写的计算器#include#define uint unsigned int#define uchar unsigned charsbit dulaP2^6;sbit welaP2^7;sbit key1P3^4;uchar code table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};uchar num,temp,num1…

Asterisk Queue呼叫中心的实现

1.先在sip.conf中建立若干个sip账号 如&#xff1a; [2207] typefriend mailbox2207 dtmfmoderfc2833 callgroup hostdynamic username2207 secret2207 canreinviteyes contextinternal calleridsch<2207> pickupgroup accountcode natyes disallowall allowilbc allowal…

stub 和 skeleton 的讲解,自己实现一个stub和skeleton程序

RMI的本质就是实现在不同JVM之间的调用,它的实现方法就是在两个JVM中各开一个Stub和Skeleton&#xff0c;二者通过socket通信来实现参数和返回值的传递。 有关RMI的例子代码网上可以找到不少,但绝大部分都是通过extend the interface java.rmi.Remote实现&#xff0c;已经封装的…

linux getdents 例子,Linux内建命令和外部命令(整理)

Linux命令有内部命令(内建命令)和外部命令之分&#xff0c;内部命令和外部命令功能基本相同&#xff0c;但也有些细微差别。【内部命令 vs. 外部命令】(1)内部命令实际上是shell程序的一部分&#xff0c;其中包含的是一些比较简单的linux系统命令&#xff0c;这些命令由shell程…

asterisk版本选择

背景&#xff1a;linux环境CentOS搭建好以后&#xff0c;下一步就是安装Asterisk了&#xff0c;但是面临的第一个问题就是面对如此多的版本该如何选择&#xff0c;因此不得不先对Asterisk的版本做一些分析了 一般&#xff0c;软件根据发布的维护的时间长短界定了两种类型&#…

暑假开始了,大家给力啊

Rome was not built in a day. 没有什么能轻易弄就 齐心努力&#xff0c;定能成就转载于:https://www.cnblogs.com/ustcSL/archive/2012/06/15/2550208.html

自己移植Asterisk1.8到OpenWRT下

众所周知OpenWRT是目前最流行的嵌入式Linux之一。支持广泛的CPU包括&#xff1a;x86、MIPS、ARM、PPC等。OpenWRT的trunk中所带的那个asterisk问题很多&#xff0c;缺少很多包&#xff0c;作者似乎仅仅是为了自己使用而移植的&#xff0c;而目前网上除了不详细的官方资料外也无…

延边大学c语言题库,延边大学-SPOC官方网站

课程大纲一、课程教学目的与任务本课程是理工科类的一门非常重要的计算机基础性课程&#xff0c;是学生学习程序设计语言和方法以及数据结构等课程的先导课程。是使学生了解有关程序设计的基本概念及常用术语&#xff0c;学习C 语言的基础知识、基本理论、基本概念和基本方法&a…

VC程序在没装VC的机器中运行

VC程序在没装VC的机器中运行(发表时间: 2008-6-26 16:01:00) 【评论】 【打印】 【字体&#xff1a;大 中 小】 本文链接&#xff1a;http://blog.pfan.cn/miaowei/36283.html复制链接 分享到&#xff1a;0标签:vs.net2005 vs.net2003 没装VC 没有VC 由于工作需要&#xff…

Asterisk PBX 快速安装向导

Asterisk PBX 可以简单的安装到大多数 Linux发行版本上&#xff0c;如 Debian, RedHat等&#xff0c;也可以定制到专用Linux版本运行&#xff0c;如Astlinux就是一个定制系统的例子。Asterisk PBX还可以运行于 Windows的cygwin境下(功能受到较大限制)&#xff0c;我们还曾经试…

STM32单片机读电压电流C语言,STM32单片机怎么检测0-24电压和电流

32的采集范围是0-3.3v你需0-24v电压衰减电路&#xff1a;电压跟随器高精度用运放&#xff0c;中精度用T型网络衰减电路&#xff0c;要求低用电阻分压的。电压缩小到0-3.3v范围内采集&#xff0c;然后用32通过一定比例再计算出实际电压扩展资料&#xff1a;单片机应用范围电路板…

报表中的Excel操作之Aspose.Cells(Excel模板)

本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件。这个组件的强大之处&#xff0c;就不多说&#xff0c;对于我们的报表总是会有导出Excel的处理&#xff0c;如果你使用微软Excel的com组件&#xff0c;那么对于简单的操作还行&#xff0c;但是多余复杂的模板&#xff0…

Android usb 权限广播,[Android]USB开发

第一&#xff1a;请求权限和请求权限回调(通过广播回调)注册一个广播接收器用于接收USB权限被同意或拒绝后发出的广播//注册USB设备权限管理广播IntentFilter filter new IntentFilter(ACTION_USB_PERMISSION); //ACTION_USB_PERMISSION为自定义的字符串context.registerRecei…

在飞音G801上运行OpenWRT+Asterisk

上篇文章介绍了如何在华硕RT-N11建立小型的SIP Server&#xff0c;本篇文章介绍将Asterisk移植到更为强大的VOIP网关G801上。G801是北京飞音时代的无线VoIP网关产品&#xff0c;在韩国SKT等运营商中广泛采用。G801支持802.11n 2T2R的无线路由&#xff0c;1WAN 4LAN的以太网&am…

自定义系统菜单

procedure SysMenuCommand(var Msg:TWMMENUSELECT);message WM_SYSCOMMAND;procedure TFormMain.SysMenuCommand(var Msg: TWMMenuSelect); begincase Msg.IDItem of0:beginMessageBox(0,PChar(茶杯),操作提示,MB_OKMB_ICONINFORMATION);end;1:beginMessageBox(0,PChar(书本),操…

android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。

Encrypt(加密工具)字符串&#xff0c;byte[]&#xff0c;文件等对象的加密和解密工具集合&#xff0c;包含了多种加密方案。加密类型摘要相关方法简单加密换一种编码格式Base64Util单向加密只能加密&#xff0c;不能解密MD5Util、SHAUtil对称加密使用相同的秘钥加密和解密AESUt…

开源应用架构之asterisk

作者&#xff1a;Russell Bryant 翻译&#xff1a;jiazhengfeng Asterisk[1]是一款GPLv2协议下的开源电话应用平台。简单来说&#xff0c;Asterisk是一个服务器应用&#xff0c;能够完成发起电话呼叫、接受电话呼叫、对电话呼叫进行定制处理。 Asterisk这个项目是由Mark Spen…

垃圾回收

大部分内容来自于&#xff1a; http://en.wikipedia.org/wiki/Garbage_collection_(computer_science) 垃圾回收&#xff08;garbage collection&#xff09;机制的基本原则是&#xff1a; 1. 找出程序中不会再被访问到的对象。 2. 回收这部分对象占用的资源&#xff08;内存&a…

android 5.1 壁纸路径,RTFSC – Android5.1 壁纸设置流程简析 – RustFisher

Android5.1 壁纸设置流程浅析Ubuntu14.04 Android5.1 Source Insight3这里只是简单分析一下5.1里是如何设置壁纸的&#xff1b;这个流程和4.4有一些不同。但基本都是找个地方存放壁纸文件&#xff0c;需要的时候读取&#xff0c;设置的时候更新这里只看设置的过程。权当参考。…

如何在asterisk中限制呼叫路数?

在asterisk中&#xff0c;对于呼叫个数是可以通过call-limit进行限制的。限制办法是通过修改asterisk.conf中maxcalls参数&#xff0c;设置允许的最大呼叫数。这里的最大呼叫数是包括所有的呼叫数&#xff0c;出境、入境、分机间等呼叫。 为了分别限制出境/入境/分机间呼叫&…