今天开发需要用到时间来编码
不知道C#有没有相关的方法能把"年月日时分秒"这样的字符串转化为DateTime对象,我之前没碰这样的问题,没处理过,不知道有没有,但想想挺复杂的,例如同样的时间"2019-11-05 12:30:01","201911050926"就有好几种表示方法:
可能还有更多,要转成DateTime对象,就必须先弄清它的格式,这是一个比较头疼的问题。后来还是让他找到了一个方法:DateTime.TryParseExact,使用如下:
程序代码
DateTime dt;
DateTime.TryParseExact("20191105092601","yyyyMMddHHmmss",System.Globalization.CultureInfo.InvariantCulture,System.Globalization.DateTimeStyles.AdjustToUniversal, out dt);
Console.Write(dt.ToString());
DateTime.TryParseExact("201911050926","yyyyMMddHHmm",System.Globalization.CultureInfo.InvariantCulture,System.Globalization.DateTimeStyles.AdjustToUniversal, out dt);
Console.Write(dt.ToString());
DateTime.TryParse(string strTime,out parseValue);
测试只支持"2016-09-08 18:38:50"这种格式
string s = "2016-09-08 18:38:50";
DateTime result;
bool result = DateTime.TryParse(s,out result);
下面是我自己疯转的简单方法(注意:else以后的逻辑不用理会,纯属需要)
/// <summary>
/// 描 述:根据时间进行自编码
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public static string GetDateFormatCode(string code,string format = "yyyyMMddHHmm")
{
DateTime dtDate;
DateTime dt = DateTime.Now;
if (DateTime.TryParseExact(code, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out dtDate))
{
dt = DateTime.ParseExact(code, format, System.Globalization.CultureInfo.CurrentCulture);
dt = dt.AddMinutes(1);
System.Diagnostics.Debug.WriteLine("GetDateFormatCode-正常日期格式:" + dt.ToString(format));
return dt.ToString(format);
}
else
{
int h = GetRandom(0,8);
int m = GetRandom(10,60);
System.Diagnostics.Debug.WriteLine("GetDateFormatCode-非正常日期格式:" + dt.ToString("yyyyMMdd0"+h+""+m));
return dt.ToString("yyyyMMdd0" + h + "" + m);
}
}