字符串转日期格式
1 将8位日期字符串转换为日期格式
dateStr = "20220203";
//指定转换格式
System.IFormatProvider format=new System.Globalization.CultureInfo("zh-CN",true);
string strDateFormat = "yyyyMMdd";
date = DateTime.ParseExact(dateStr,strDateFormat,format, DateTimeStyles.AllowWhiteSpaces);
2 将6位字符串转化为日期格式
dateStr = "202202";
//指定转换格式
System.IFormatProvider format=new System.Globalization.CultureInfo("zh-CN",true);
string strDateFormat = "yyyyMM";
date = DateTime.ParseExact(dateStr,strDateFormat,format, DateTimeStyles.AllowWhiteSpaces);
3 采用拼接连接符的方式进行日期转换
//分别获取20051126中的年、月、日字符串
string yyyy="20051126".Substring(0,4);
string mm="20051126".Substring(4,2);
string dd="20051126".Substring(5,2); //拼写符合日期格式的字符串
string riqi=yyyy+"-"+mm+"-"+dd; //将符合日期格式的字符串转化为DateTime数据类型
DateTime dt = Convert.ToDateTime(riqi);
4. 使用字符串插入函数进行日期转换
// 把20051126变为2005/11/26
DateTimeFormatInfo dtFormat = new System.GlobalizationDateTimeFormatInfo();
dtFormat.ShortDatePattern = "yyyy/MM/dd";
string s = "20051126";
s = s.Insert(4,"/");
s = s.Insert(7,"/");
DateTime dt = Convert.ToDateTime(s, dtFormat);
验证是否为合法日期
public bool IsDate(string strDate)
{
try
{
// strDate格式有要求,必须是yyyy-MM-dd hh:mm:ss
DateTime.Parse(strDate); //不是字符串时会出现异常
return true;
}
catch
{
return false;
}
}
比较两个日期
/// <summary>
/// 比较两个日期大小
/// </summary>
/// <param name="dateStr1">日期1</param>
/// <param name="dateStr2">日期2</param>
/// <param name="msg">返回信息</param>
public void CompanyDate(string dateStr1, string dateStr2,ref string msg) {
//将日期字符串转换为日期对象
DateTime t1 = Convert.ToDateTime(dateStr1);
DateTime t2 = Convert.ToDateTime(dateStr2);
//通过DateTIme.Compare()进行比较()
int compNum = DateTime.Compare(t1, t2);
//t1> t2
if (compNum > 0) {
msg = "t1:(" + dateStr1 + ")大于" + "t2(" + dateStr2 + ")";
}
//t1= t2
if (compNum == 0) {
msg = "t1:(" + dateStr1 + ")等于" + "t2(" + dateStr2 + ")";
}
//t1< t2
if (compNum < 0) {
msg = "t1:(" + dateStr1 + ")小于" + "t2(" + dateStr2 + ")";
}
}
还可以使用 DateTime的compareTo函数进行日期比较
DateTime dt1 = DateTime.ParseExact(dateStr1, "yyyyMMdd", new CultureInfo("zh-CN", true), DateTimeStyles,AllowWhiteSpaces);
DateTime dt2 = DateTime.ParseExact(dateStr1, "yyyyMMdd", new CultureInfo("zh-CN", true), DateTimeStyles,AllowWhiteSpaces);
int flag = dt1.CompareTo(dt2);//flag=-1表示dt1比dt2早;0表示dt1与dt2相等;1表示dt1比dt2晚
简化代码总结:
// 方法1:直接取子串拼接
DateTime dt=Convert.ToDateTime("20100101".Substring(0,4)+"-"+"20100101".Substring(4,2)+"-"+"20071107".Substring(6,2));
// 方法2:
string dateString = "20110526";
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
//或者
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
参考资料: