300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 日期格式:ddMMyy-hhmmss 格林威治时间转换成北京时间

日期格式:ddMMyy-hhmmss 格林威治时间转换成北京时间

时间:2019-02-04 09:27:10

相关推荐

日期格式:ddMMyy-hhmmss 格林威治时间转换成北京时间

有些项目需要第三方的接口来取数据,这样就有个问题,那就是有些字段比较特殊,采用的都是国际标准时间,方便别的语言调用,这样时间差就相差不一样了,需要进行转换。

例如:GPS的数据时间格式:ddMMyy-hhmmss 需要转换DateTime类型,如果用Convert.ToDateTime进行转换会报错,因为格式不正确,还有一种方式转换DateTime.ParseExact(date, "ddMMyy-hhmmss", CultureInfo.CurrentCulture),这种方式也是有问题,假如日期小时(hh)是凌晨:16到23这个时间段会报错。还有就是取来的接口数据不会自动补全天、月,比如:4月1日,可能第三方传给你的是dMyy,缺少0.

所以要解决比较好的方式可以选择解析日期:

如下代码:

调勇:

ToDateTime("080316-060553")

#region 格林威治时间转换成北京时间/// <summary>/// 格林威治时间转换成北京时间/// </summary>/// <param name="date">ddMMyy-hhmmss</param>/// <returns>DateTime</returns>public static DateTime ToDateTime(string date){var yyyy = "";var MM = "";var dd = "";var hh = "";var mm = "";var ss = "";var newDate = "";var nowDate = DateTime.Now;try{if (!string.IsNullOrEmpty(date) && date.Contains('-')){var dates = date.Split('-');var yyMMdd = dates[0];var hhmmss = dates[1];if (yyMMdd.Length == 6){yyyy = "20" + yyMMdd.Substring(4, 2);MM = yyMMdd.Substring(2, 2);dd = yyMMdd.Substring(0, 2);}else if (yyMMdd.Length == 5){yyyy = "20" + yyMMdd.Substring(3, 2);MM = yyMMdd.Substring(1, 2);dd = yyMMdd.Substring(0, 1);}else if (yyMMdd.Length == 4){yyyy = "20" + yyMMdd.Substring(2, 2);MM = yyMMdd.Substring(1, 1);dd = yyMMdd.Substring(0, 1);}if (hhmmss.Length == 6){hh = hhmmss.Substring(0, 2);mm = hhmmss.Substring(2, 2);ss = hhmmss.Substring(4, 2);}else{hh = nowDate.ToString("hh");mm = nowDate.ToString("mm");ss = nowDate.ToString("ss");}newDate = yyyy + "-" + MM.PadLeft(2, '0') + "-" + dd.PadLeft(2, '0') + " " + hh.PadLeft(2, '0') + ":" + mm.PadLeft(2, '0') + ":" + ss.PadLeft(2, '0');return Convert.ToDateTime(newDate).AddHours(8);//北京时间需要加8个小时}}catch (Exception ex){}return DateTime.Now;} #endregion

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。