一、C#字符串转换为DateTime类型
在C#中,将字符串转换为时间类型可以使用DateTime
类的静态Parse()
方法。需要注意的是,输入的字符串必须符合DateTime
类的ToString()
方法返回的字符串格式,否则会抛出FormatException
异常。
using System;
class Program {
static void Main(string[] args) {
string str = "2022-03-01 18:30:00";
DateTime time = DateTime.Parse(str);
Console.WriteLine("转换后的时间为:" + time);
}
}
二、指定字符串格式转换为DateTime类型
如果输入的字符串不符合标准的时间格式,就需要指定格式进行转换。可以使用DateTime
类的静态ParseExact()
或TryParseExact()
方法,两者区别在于ParseExact()
方法在转换失败时会抛出异常,而TryParseExact()
方法返回是否转换成功。
using System;
class Program {
static void Main(string[] args) {
string str = "2022-03-01T18:30:00Z";
string format = "yyyy-MM-ddTHH:mm:ssZ";
DateTime time;
if (DateTime.TryParseExact(str, format, null, System.Globalization.DateTimeStyles.None, out time)) {
Console.WriteLine("转换后的时间为:" + time);
} else {
Console.WriteLine("转换失败");
}
}
}
三、处理日期格式不一致的情况
在实际开发中,经常遇到不同格式的日期字符串,需要进行统一处理。可以使用DateTime
类的ToString()
方法和ParseExact()
方法配合使用,将日期字符串先转换为标准格式,再进行转换。
using System;
class Program {
static void Main(string[] args) {
string str1 = "2022/3/1";
string str2 = "2022-03-01 18:30:00";
string format1 = "yyyy/M/d";
string format2 = "yyyy-MM-dd HH:mm:ss";
string standardStr1, standardStr2;
DateTime time;
// 转换str1
if (DateTime.TryParseExact(str1, format1, null, System.Globalization.DateTimeStyles.None, out time)) {
standardStr1 = time.ToString(format2);
} else {
Console.WriteLine("转换失败");
return;
}
// 转换str2
if (DateTime.TryParseExact(str2, format2, null, System.Globalization.DateTimeStyles.None, out time)) {
standardStr2 = time.ToString(format2);
} else {
Console.WriteLine("转换失败");
return;
}
Console.WriteLine("转换后的时间1为:" + DateTime.Parse(standardStr1));
Console.WriteLine("转换后的时间2为:" + DateTime.Parse(standardStr2));
}
}
四、其他相关问题
如何将C# DateTime类型转换为字符串?
可以使用DateTime
类的ToString()
方法,传入指定的格式即可。
DateTime time = DateTime.Now;
string str = time.ToString("yyyy-MM-dd HH:mm:ss");
Console.WriteLine("转换后的字符串为:" + str);
如何获取当前时间?
可以使用DateTime
类的静态Now
属性。
DateTime now = DateTime.Now;
Console.WriteLine("当前时间为:" + now);
如何将时间戳转换为DateTime类型?
可以使用Unix时间戳转换为DateTime
类型的方法,即将Unix时间戳转换为DateTime
对象。
string timeStamp = "1646131800"; // 时间戳的字符串形式
DateTime time = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)
.AddSeconds(Convert.ToDouble(timeStamp))
.ToLocalTime();
Console.WriteLine("转换后的时间为:" + time);