c#中如何把字符串 “12:46pm 31 十月 2015” 转换为datetime类型
发布网友
发布时间:2022-04-29 01:39
我来回答
共2个回答
热心网友
时间:2023-10-02 06:49
class Program
{
static void Main(string[] args)
{
//时间字符串定义
string text = "12:46pm 31 十月 2015";
DateTime resDate = new DateTime();
//判断是否是上午
bool isMorning = text.Contains("am");
//字符串替换 月份替换为数字 冒号替换为空格 am和pm替换为空
text = text.Replace("一月", "01").Replace("二月", "02").Replace("三月", "03").Replace("四月", "04").Replace("五月", "05").Replace("六月", "06").Replace("七月", "07").Replace("八月", "08").Replace("九月", "09").Replace("十月", "10").Replace("十一月", "11").Replace("十二月", "12").Replace("am", string.Empty).Replace("pm", string.Empty).Replace(":", " ");
if (DateTime.TryParseExact(text,"hh mm dd MM yyyy",null,System.Globalization.DateTimeStyles.None,out resDate))
{
if (isMorning)
{
//12:00am指的是午夜00:00
resDate = resDate.Hour == 12 ? resDate.AddHours(-12) : resDate;
}
else if(!isMorning)
{
//12:00pm外的时间要加12小时
resDate = resDate.Hour == 12 ? resDate : resDate.AddHours(12);
}
Console.WriteLine(resDate.ToString());
}
else
{
Console.WriteLine("日期转换失败");
}
Console.ReadKey();
}
}
注:时间一位比如5点显示为5而不是05时,应该用“h”而不是“hh”,这里有什么不懂的话可以查一下相关的资料。
热心网友
时间:2023-10-02 06:49
没有规律,只能拆分后再构造datetime,可以考虑正则表达式