在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结。一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string value)方法进行转换。


首先介绍最常用的Convert.ToDateTime方法,然后在说明其他的方法。下面这段代码是最常见的转换代码:

   //将含有正确日期格式的string类型转换成DateTime类型
string strDate = "2014-08-01";
DateTime dt1 = Convert.ToDateTime(strDate);
//将包含时分秒的string类型日期转换成DateTime类型
string strDateTime = "2014-08-01 10:57:31";
DateTime dt2 = Convert.ToDateTime(strDateTime);

  

C#的类型转换还是十分方便的,这里要注意的是,传入的string类型的日期格式必须要正确,否则会跳出异常错误信息:该字符串未被识别为有效的 DateTime。正确的日期格式为 yyyy-MM-dd HH:mm:ss (2014-08-01 11:25:20)或者 yyyy/MM/dd HH:mm:ss (2014-08-01 11:25:20),还有其他格式这里就不列举了,网上搜索下C#日期格式就有了,这里提供下微软的MSDN官方文档

这里是转换方法的文档说明:

        // 摘要:
// 将日期和时间的指定字符串表示形式转换为等效的日期和时间值。
//
// 参数:
// value:
// 日期和时间的字符串表示形式。
//
// 返回结果:
// value 的值的日期和时间等效项,如果 value 为 null
// ,则为 System.DateTime.MinValue 的日期和时间等效项。
//
// 异常:
// System.FormatException:
// value 不是格式正确的日期和时间字符串。
public static DateTime ToDateTime(string value);

  这里在介绍下其他的转换方法,我们还可以使用DateTime.Parse,DateTime.TryParse,DateTime.ParseExact和DateTime.TryParseExact这四个方法进行转换。

    /*声明要转换的日期格式字符串*/
string strDateTime = "2014-08-01 13:52:05"; /*使用DateTime.Parse方法进行转换*/
DateTime dt1 = DateTime.Parse(strDateTime); /*
* 使用TryParse方法进行转换
* 如果日期格式不正确则返回空值
* 转换后的值自动赋值给传入的out形参dt2中
*/
DateTime dt2;
DateTime.TryParse(strDateTime, out dt2); /*
* 使用ParseExact方法进行转换
* 这里需要带入要转换的日期格式参数
* 这里的日期格式可以自定义,比如yyyyMMddHHmmss,就可以传入20140801135205进行转换
* 第三个参数是区域性特定格式信息,这里使用当前系统默认区域(即中国)
*/
DateTime dt3=DateTime.ParseExact(strDateTime,"yyyy-MM-dd HH:mm:ss",System.Globalization.CultureInfo.CurrentCulture); /*
* 使用TryParseExact方法进行转换
* 基本用法和大致参数ParseExact方法一样
* 只是传入返回值的DateTime类型的out形参,这里是dt4
* 第四个参数为:格式设置选项,既DateTimeStyles枚举,设置NONE即可
*/
DateTime dt4;
DateTime.TryParseExact(strDateTime, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out dt4);

  这里要注意的是,如果是用Parse方法也是需要注意传入正确的日期格式,否则会有错误异常。但是如果使用TryParse方法则不用担心,错误的格式只会返回null空的DateTime类型回来。ParseExact和TryParseExact则是根据你传入的日期格式进行转换,这里可转换任意的日期格式,具体转换其他格式的日期字符串的内容。

最近项目中遇到以前一直困扰的问题,就是如何将string转换成DateTime?这种可空日期类型。以前总是通过编写一堆逻辑代码来进行转换,但是写这些代码感觉非常繁琐。后在网上浏览相关资料,使用NullableConverter类就可以轻松的进行转换。

以下是测试的部分代码,代码在控制台应用程序中运行:

/* 测试string类型转换成DateTime?类型*/
/*NullableConverter类构造函数必须传入要转换的类型*/ System.ComponentModel.NullableConverter nullableDateTime = new System.ComponentModel.NullableConverter(typeof(DateTime?)); /*
*正常日期格式字符串转换为DateTime?
*/
string strDate = DateTime.Now.ToString();
DateTime? dt1=(DateTime?)nullableDateTime.ConvertFromString(strDate);
Console.WriteLine("正常日期格式字符串转换成DateTime?:{0}", dt1); /*
*字符串为空白转换为DateTime?
*/
strDate = string.Empty;
DateTime? dt2 = (DateTime?)nullableDateTime.ConvertFromString(strDate);
Console.WriteLine("空白字符串转换成DateTime?:{0}", dt2); /*
*字符串为NULL转换为DateTime?
*/
strDate = null;
DateTime? dt3 = (DateTime?)nullableDateTime.ConvertFromString(strDate);
Console.WriteLine("NULL字符串转换成DateTime?:{0}", dt3);
Console.Read();

  

输出的结果是:

总结果上看可以顺利将空字符串和正常的字符串转换成DateTime?类型,但是如果传入非法的日期格式的字符串会报错,需要另外处理。

NullableConverter类主要提供可空类型与其基础基元类型间的自动转换。关于NullableConverter类的具体说明,可在网络上找到大量的资料,这里就不再叙述。这里是MSDN的描述:http://msdn.microsoft.com/zh-cn/library/system.componentmodel.nullableconverter(v=vs.85).aspx

C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)的更多相关文章

  1. 字符串string类型转换成DateTime或DateTime?类型

    常用的Convert.ToDateTime方法 //将含有正确日期格式的string类型转换成DateTime类型 string strDate = "2014-08-01"; D ...

  2. 如何将String类型转换成任意基本类型

    [原创][C#] 如何将String类型转换成任意基本类型 Posted on  2009-12-02 09:47  YCOE 阅读( 2843) 评论( 14)  编辑  收藏 前几天,在写一个自动 ...

  3. Java String类型转换成Date日期类型

    插入数据库时,存入当前日期,需要格式转换 import java.text.SimpleDateFormat; formatter = new SimpleDateFormat( "yyyy ...

  4. C#String类型转换成Brush类型

    C#String类型转换成Brush类型: using System.Windows.Media; BrushConverter brushConverter = new BrushConverter ...

  5. JavaScript 把字符串类型转换成日期类型

    今天在写习题时,遇到些小问题,在这里把答案分享给大家,希望能帮助到大家! 一.把字符串转换成日期类型 var str = "1997-3-12"; var d = new Date ...

  6. 【转载】C#里怎么把string类型转换成double

    在C#的数字计算过程中,有很多的方法可以将字符串String类型的变量转换为double类型,double.Parse方法.Convert.ToDouble方法.double.TryParse方法等都 ...

  7. python将字符串类型改成日期类型

    将字符串类型的'2019-03-14'改成date类型,如下: import datetime b = datetime.date(*map(int,'2019-03-14'.split('-'))) ...

  8. .NET向WebService传值为decimal、double、int、DateTime等非string类型属性时,服务器端接收不到数据的问题

    最近在做CRM项目时,使用C#调用SAP PI发布的WebService服务时遇到的问题: 向WebService传值为decimal.double.int.DateTime等非string类型数据时 ...

  9. 2016年11月3日JS脚本简介数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6.布尔型数据:bool 7.对象类型:object 8.二进制:binary 语言类型: 1.强类型语言:c++ c c# java 2.弱类型语

    数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6 ...

随机推荐

  1. Some useful links

    Integrating the FlyCapture SDK for use with OpenCV CStereoGrabber_Bumblebee.h OpenCV with PGR Flycap ...

  2. Hadoop_简单操作ZooKeeper

    一.概念 1. 一个开源的.分布式的,为分布式应用提供协调服务的Apache项目 2. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务 3. 设计非常易于编程,它使用的是类 ...

  3. 【8.0、9.0c】树形列表 列标题 不对齐的问题及解决方案

    树形视图状态经常会碰到字体上下排列不整齐的问题,虽不是什么大问题,但对某些处女座的人来说,真的是如鲠在喉,今天我们就来解决这个问题: 首先呢,这个问题的起因,不是前端css的问题,也不是js的问题,而 ...

  4. mysqld诡异crash

    突然收到告警短信,提示有一组服务器MHA已经切换,登录服务器后查看错误日志如下(其中相关insert语句已经处理): mysql版本:5.5.24 :: InnoDB: Assertion failu ...

  5. 函数响应式编程(FRP)—基础概念篇

    原文出处:http://ios.jobbole.com/86815/. 一函数响应式编程 说到函数响应式编程,就不得不提到函数式编程,他们俩有什么关系呢?今天我们就详细的解析一下他们的关系. 现在下面 ...

  6. 字符串—strcpy

    来自——百度百科   原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include ...

  7. HDU 4287 Intelligent IME(字典树数组版)

    Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. web.xml配置error-page

    一. 通过错误码来配置error-page <error-page> <error-code>404</error-code> <location>/e ...

  9. win commands

    wmic process where name="explorer.exe" delete 我想你问得应该是运行命令吧!我查了,没有,你自己参考一下:Windows常用命令集 wi ...

  10. MySQL 范式

    在做笔试题的时候遇到一些判断范式的题,就去找了些博客与书来看,觉得这个是比较好理解的: 第一范式:确保每列的原子性. 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足 ...