2011-05-18 53 views
-1

我想在C#来解析DateTime和具有下面的代码行:试图解析在C#中的DateTime

string dt =Convert.ToString(DateTime.FromFileTime(e8.sts[counter8].TimeStamp)); 
string format = "dd-MM-yyyy HH:mm:ss"; 
DateTime dateTime = DateTime.ParseExact(dt, format,CultureInfo.InvariantCulture); 

当调试dt即将作为05/18/2011 09:25:17 AM,但我得到了厚望说:

字符串未被识别为有效的 DateTime。

+1

看着你的评论,我越来越清楚*解析*不是问题,并且你真的想要*输出* DateTime到自定义字符串格式。你能否编辑你的问题,并添加一些说明你正在寻找什么?特别是推送到MySql似乎是你的要求,你不会在你的问题中提到它。 – 2011-05-18 07:39:22

回答

1

您的日期时间快到了作为MM-dd-yyyy但你试图解析它作为dd-MM-yyyy

您的格式字符串更改为"MM-dd-yyyy HH:mm:ss tt"

可以这么说,作为dt,使用当前的格式字符串,是试图将被解析为18个月2011(年)的(MM)的第5天(DD)...

编辑:
对不起,我完全错过了AM/PM指示符,您需要格式字符串的tt部分。这将处理字符串

EDIT 2的AM/PM部分:
根据你最近的评论,你想将它转换为MM-dd-yyyy HH:mm:ss字符串,你需要做的一切是:

var outputString = DateTime.FromFileTime(e8.sts[counter8].TimeStamp).ToString("MM-dd-yyyy HH:mm:ss"); 

您已经在val; id .NET DateTime对象中拥有TimeStamp,因此您只需执行带有所需时间格式的.ToString()即可。

+0

它会显示相同的异常 – vrushali 2011-05-18 04:38:00

+0

你想用代码做什么呢? – 2011-05-18 04:43:35

+0

我会像你告诉我的变化,但它会显示相同的异常 – vrushali 2011-05-18 04:53:30

1

这不是预期的吗?日期05/18/2011 09:25:17 AM与您的格式字符串dd-MM-yyyy HH:mm:ss不匹配。你的日期格式为MM/dd/yyyy HH:mm:ss tt

试试这个:

DateTime dateTime = DateTime.Parse("05/18/2011 09:25:17 AM"); 
+0

但我想将此日期时间格式转换为dd-MM-yyyy HH:毫米:ss – vrushali 2011-05-18 04:42:12

+0

@vrushali - 所以你有这样的日期作为输入'05/18/2011 09:25:17 AM',你想把它转换为像这样的字符串'18-05-2011 09:25:17 '? – 2011-05-18 04:45:30

+0

yes,05-18-2011 9:25:17这种格式也接受 – vrushali 2011-05-18 04:51:23

3

出发,你有没有需要转换。

DateTime.FromFileTime(e8.sts[counter8].TimeStamp)返回DateTime已经...

即使如此,与您所提供的字符串,DateTime.Parse(str)会照顾你。

如果你最终在一个文本文件中存储这个值,真的是死心塌地上使用自定义格式字符串解析它(你不需要):

你拥有的格式:

Day/Month/Year 24-hour:minute:second 

但看你的输入日期:

2011年5月18日上午09点25分十七秒

你想:

Month/Day/Year 12-hour:minutes:seconds AM/PM 

格式为你想要的是:

MM/dd/yyyy hh:mm:ss tt 
+0

我将从OPC服务器读取日期时间,它将返回时间戳值”129501645169843750“,所以我将转换这个时间戳来获取日期时间。我将以这种格式“MM/dd/yyyy hh:mm:ss tt”获取日期时间,我想将此时间格式转换为“MM-dd-yyyy HH:mm:ss”格式,因为当我将被存储日期时间在MYSQL数据库中作为日期时间字段&MYSQL不接受这种格式“MM/dd/yyyy hh:mm:ss tt” – vrushali 2011-05-18 04:45:50

+0

@vrushali:显示的代码示例询问如何解析DateTime,而不是如何输出以自定义字符串格式。你想知道如何输出到自定义的“MM-dd-yyyy HH:mm:ss”字符串格式吗? – 2011-05-18 07:36:56

1

我看不出有任何理由的转换。只需使用:

DateTime.FromFileTime(e8.sts[counter8].TimeStamp) 
+0

我将从OPC服务器读取日期时间,它将返回时间戳值“129501645169843750”,因此我将将此时间戳转换为获取日期时间。我将以这种格式“MM/dd/yyyy hh:mm:ss tt”获取日期时间,我想将此时间格式转换为“MM-dd-yyyy HH:mm:ss”格式,因为当我将被存储日期时间在MYSQL数据库作为日期时间字段&MYSQL不接受这种格式“MM/dd/yyyy hh:mm:ss tt” – vrushali 2011-05-18 04:58:25

0
DateTime parsed = DateTime.ParseExact(dt,"MM/dd/yyyy HH:mm:ss tt",CultureInfo.InvariantCulture); 
0

的许多其他人都在这里解释的,需要改变的格式。但是,即使我尝试了他们提出的格式,我仍然收到了与您所做的相同的错误。最终我选择了正确的格式来获得成功的结果。

格式应该是:

string format = "MM/dd/yyyy HH:mm:ss tt"; 

,因为您指定的时间模式,如AM。如果月份是以一位数字表示的,例如:5,那么MM应该用M代替。我在日期之间使用了斜杠而不是大写,因为这是原始日期的给定方式。

+0

但我想转换这种格式在“MM-dd-yyyy HH:mm:ss” – vrushali 2011-05-18 05:38:18