请问如何将字符串Aug 1 2007 12:05:12:000AM转换成DateTime格式?

starduoduo 2007-12-04 09:51:11
最近在项目中遇到Aug 1 2007 12:05:12:000AM这种时间格式,要求转换成DATETIME格式,导入ACCESS数据库。请问用C#应该如何转换?
...全文
381 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
starduoduo 2007-12-13
  • 打赏
  • 举报
回复
谢谢zswang和root_二位耐心的解答,分已送上。
lovehongyun 2007-12-04
  • 打赏
  • 举报
回复
DateTime dt1 = DateTime.ParseExact("Aug 31 2007 12:05:12:000AM", "MMM d yyyy hh:mm:ss:ffftt", CultureInfo.GetCultureInfo("en-US"));
DateTime dt2 = DateTime.ParseExact("Aug 31 2007 12:05:12:000PM", "MMM d yyyy hh:mm:ss:ffftt", CultureInfo.GetCultureInfo("en-US"));

output:
2007-08-31 00:05:12:000
2007-08-31 12:05:12:000
playwarcraft 2007-12-04
  • 打赏
  • 举报
回复

--SQL 中直接轉換的結果是
select convert(datetime,'Aug 1 2007 12:05:12:000AM')

/*
-------------------------
2007-08-01 00:05:12.000
*/
root_ 2007-12-04
  • 打赏
  • 举报
回复
谁告诉你的
Aug 31 2007 12:05:12:000PM 转换后应该是 2007-09-01 00:05:12
你又从哪里看到
Aug 31 2007 12:05:12:000PM 和 Aug 31 2007 12:05:12:000AM转换出来都是一样的了

Aug 31 2007 12:05:12:000AM 转换为24小时制应该是 Aug 31 2007 00:05:12:000
Aug 31 2007 12:05:12:000PM 转换为24小时制应该是 Aug 31 2007 12:05:12:000

先做过测试再说
DateTime dt1 = DateTime.ParseExact("Aug 31 2007 12:05:12:000AM", "MMM d yyyy hh:mm:ss:ffftt", CultureInfo.GetCultureInfo("en-US"));
DateTime dt2 = DateTime.ParseExact("Aug 31 2007 12:05:12:000PM", "MMM d yyyy hh:mm:ss:ffftt", CultureInfo.GetCultureInfo("en-US"));
MessageBox.Show(dt1.ToString("yyyy-MM-dd HH:mm:ss:fff") + "\n" + dt2.ToString("yyyy-MM-dd HH:mm:ss:fff"));
王集鹄 2007-12-04
  • 打赏
  • 举报
回复
本身“上午12点,下午12点”本身就有不好理解 //一般口语是:午夜12点,中午12点,但老外不这样说(他们说midnights 午夜)
就象我们说星期一、星期二一样,他们没有1、2的说法
这是文化差异
计算机语言是老外设计的,你就得按老外的思维理解
测试数据控制在00:00:00-11:59:59之间
"MMM d yyyy hh:mm:ss:ffftt"
"Aug 31 2007 12:05:12:000PM" //2007-8-31 12:05:12
"Aug 31 2007 12:05:12:000AM" //2007-8-31 0:05:12


starduoduo 2007-12-04
  • 打赏
  • 举报
回复
这种问题有没有解决办法啊?我用SQL SERVER里面的函数转换还是有这种问题,就是不区分AM和PM。
starduoduo 2007-12-04
  • 打赏
  • 举报
回复
DateTime dt = DateTime.ParseExact("Aug 31 2007 12:05:12:000PM", "MMM d yyyy hh:mm:ss:ffftt", CultureInfo.GetCultureInfo("en-US"));
转换出来应该是2007-09-01 00:05:12,但是用这个转换出来还是2007-08-31 12:05:12。那么Aug 31 2007 12:05:12:000PM和Aug 31 2007 12:05:12:000AM转换出来都是一样的,这样不是错了?
root_ 2007-12-04
  • 打赏
  • 举报
回复
sorry,我写的有一个地方也有点问题,HH应改为hh,否则转换后小时不对

DateTime dt = DateTime.ParseExact("Aug 1 2007 12:05:12:000AM", "MMM d yyyy hh:mm:ss:ffftt", CultureInfo.GetCultureInfo("en-US"));
MessageBox.Show(dt.ToString("yyyy-MM-dd HH:mm:ss:fff"));
王集鹄 2007-12-04
  • 打赏
  • 举报
回复
大概是这样
DateTime vDateTime = DateTime.ParseExact("Aug 1 2007 12:05:12:000AM",
"MMM d yyyy HH:mm:ss:ffftt",
System.Globalization.DateTimeFormatInfo.InvariantInfo);
Console.WriteLine(vDateTime);
root_ 2007-12-04
  • 打赏
  • 举报
回复
楼上回帖前自己做过测试没有?

DateTime dt = DateTime.ParseExact("Aug 1 2007 12:05:12:000AM", "MMM d yyyy HH:mm:ss:ffftt", CultureInfo.GetCultureInfo("en-US"));
MessageBox.Show(dt.ToString("yyyy-MM-dd HH:mm:ss:fff"));
  • 打赏
  • 举报
回复
MyDate.ToString("yyyy - MM - dd hh:ss:ff")
  • 打赏
  • 举报
回复
这个也是DateTime格式。
DateTime MyDate = DateTime.Parse("Aug 1 2007 12:05:12:000AM");
String MyString = MyDate.ToString("yyyy - MM - dd");

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧