Previous topicNext topic
Help > 开发指南 > 编程基础 > 数据转换 >
日期转换

日期转换是比较常用功能,这里就将一些常用的场景写一些示例,供大家参考。

1、日期转字符串。这里可以参考“日期定式格式化”与“日期自定义格式化”。

2、字符串转日期。如果我们想要把“20220706132536”这样的字符串转换成相应的日期格式,该如何处理呢?

 Vb.Net
Dim dateString As String="20220706132536"
Dim dt As DateTime=DateTime.ParseExact(dateString, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture)
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36

 C#
string dateString = "20220706132536";
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
Proj.MsgDebug.Add(dt);  // 转换结果:2022-07-06 13:25:36

下面我们介绍一些常规的字符串转日期的示例:

 Vb.Net
'方法一:Convert.ToDateTime,可以解析任意合法的日期格式字符串
Dim dtFormat As New System.Globalization.DateTimeFormatInfo()
dtFormat.ShortDatePattern = "yyyy/MM/dd"
Dim dt As DateTime= Convert.ToDateTime("2016/10/10", dtFormat)
Proj.MsgDebug.Add(dt)  '转换结果:2016-10-10 0:00:00

'方法二:DateTime.ParseExact,可以根据日期格式反向解析任意形式的日期
Dim dateString As String="20220706132536"
dt=DateTime.ParseExact(dateString, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture)
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36

'方法三:Convert.ToDateTime,字符串必须是yyyy-MM-dd hh:mm:ss格式的
Dim strDate As String="2022-07-06 13:25:36"
dt= Convert.ToDateTime(strDate)
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36
dt= Convert.ToDateTime("2016/10/10")
Proj.MsgDebug.Add(dt)  '转换结果:2016-10-10 0:00:00

'方法四:CType,可以把标准的日期格式字符串转换成日期
dt=CType(strDate,DateTime)
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36
dt=CType("2016/10/10",DateTime)
Proj.MsgDebug.Add(dt)  '转换结果:2016-10-10 0:00:00

'方法五:CDate函数
dt=CDate(strDate)
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36

'方法六:DateTime.TryParse函数
If DateTime.TryParse(strDate,dt) Then
    Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36
End If

'方法七:DateTime.Parse函数
Try
    dt=DateTime.Parse(strDate)
    Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36
Catch ex As Exception
    Proj.MsgDebug.Add("转换失败")
End Try

'方法八:Object的扩展方法CType
dt=strDate.CType(Of DateTime)()
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36
'第二种写法
dt=ObjectExtension.CType(Of DateTime)(strDate)
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36

 C#
// 方法一:Convert.ToDateTime,可以解析任意合法的日期格式字符串
System.Globalization.DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo();
dtFormat.ShortDatePattern = "yyyy/MM/dd";
DateTime dt = Convert.ToDateTime("2016/10/10", dtFormat);
Proj.MsgDebug.Add(dt);  // 转换结果:2016-10-10 0:00:00

// 方法二:DateTime.ParseExact,可以根据日期格式反向解析任意形式的日期
string dateString = "20220706132536";
dt = DateTime.ParseExact(dateString, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
Proj.MsgDebug.Add(dt);  // 转换结果:2022-07-06 13:25:36

// 方法三:Convert.ToDateTime,字符串必须是yyyy-MM-dd hh:mm:ss格式的
string strDate = "2022-07-06 13:25:36";
dt = Convert.ToDateTime(strDate);
Proj.MsgDebug.Add(dt);  // 转换结果:2022-07-06 13:25:36
dt = Convert.ToDateTime("2016/10/10");
Proj.MsgDebug.Add(dt);  // 转换结果:2016-10-10 0:00:00

// 方法四:DateTime.TryParse函数
if (DateTime.TryParse(strDate, out dt))
    Proj.MsgDebug.Add(dt);// 转换结果:2022-07-06 13:25:36

// 方法五:DateTime.Parse函数
try
{
    dt = DateTime.Parse(strDate);
    Proj.MsgDebug.Add(dt);  // 转换结果:2022-07-06 13:25:36
}
catch (Exception ex)
{
    Proj.MsgDebug.Add("转换失败");
}

// 方法六:Object的扩展方法CType
dt = strDate.CType<DateTime>();
Proj.MsgDebug.Add(dt);  // 转换结果:2022-07-06 13:25:36

3、其他日期之间的相互转换,可以参考“日期扩展”。