none
XmlConvert.ToDateTime()时间转换错误 RRS feed

  • 问题

  • XmlConvert.ToDateTime()时间转换错误:       
    字符串“2009-8-13 5:09:24”不是有效的 AllXsd 值。

    public static void Main(string[] args)
    {
        DateTime dt = DateTime.Now;
        string datetime = dt.ToUniversalTime().ToString();
        Console.WriteLine(datetime);// 输出 2009-8-13 5:24:31
        Console.Read();

        // 运行到这里报错:
        // “字符串“2009-8-13 5:09:24”不是有效的 AllXsd 值。”
        DateTime dt2 = System.Xml.XmlConvert.ToDateTime(datetime, System.Xml.XmlDateTimeSerializationMode.Utc);
        Console.WriteLine(dt2);

        Console.Read();
    }

    请问这是为什么啊?在一些Json的框架(如Jayrock.Json)里使用的就是这个方法,我传入了很多类型的时间格式,这个方法都报错。请问这个方法怎么用啊?


    做最好的自己
    2009年8月13日 5:32

答案

  • 你好 这个问题我以前在微软英文论坛的时候看到过

    当你转换成utc的时候记得按照下面这样的方式string datetime = dt.ToUniversalTime().ToString("s");

    DateTime dt = DateTime.Now;
             string datetime = dt.ToUniversalTime().ToString("s");
             Console.WriteLine(datetime);// 输出 2009-8-13 5:24:31
             Console.Read();

             // 运行到这里报错:
             // “字符串“2009-8-13 5:09:24”不是有效的 AllXsd 值。”
             DateTime dt2 = System.Xml.XmlConvert.ToDateTime(datetime, System.Xml.XmlDateTimeSerializationMode.Utc);
             Console.WriteLine(dt2);

             Console.Read();


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 5:50
    版主
  • 你好 你可以看到刚才例子UTC 转化为字符串的格式是 2009-08-13T08:29:55
    所以你可以通过
    var d=new Data();
    然后通过  getUTCDate 方法 | getUTCDay 方法 | getUTCFullYear 方法 | getUTCHours 方法 | getUTCMilliSeconds 方法 | getUTCMinutes 方法 | getUTCMonth 方法 | getUTCSeconds 方法  这些方法
    获得年月日小时分秒,然后拼接成一个 2009-08-13T08:29:55类似格式的字符串 然后就可以转换了 主要是在中间添加T
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 8:32
    版主

全部回复

  • 你好 这个问题我以前在微软英文论坛的时候看到过

    当你转换成utc的时候记得按照下面这样的方式string datetime = dt.ToUniversalTime().ToString("s");

    DateTime dt = DateTime.Now;
             string datetime = dt.ToUniversalTime().ToString("s");
             Console.WriteLine(datetime);// 输出 2009-8-13 5:24:31
             Console.Read();

             // 运行到这里报错:
             // “字符串“2009-8-13 5:09:24”不是有效的 AllXsd 值。”
             DateTime dt2 = System.Xml.XmlConvert.ToDateTime(datetime, System.Xml.XmlDateTimeSerializationMode.Utc);
             Console.WriteLine(dt2);

             Console.Read();


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 5:50
    版主
  • 您好,
    您的回复完全正确,谢谢您的回答。

    不过我还想问您一个问题:

    在JavaScript里new Date().toUTCString()得到的时间值如下所示:
    “Thu, 13 Aug 2009 07:41:50 UTC”
    在那个方法里肯定是不能转换的成DateTime类型的。
    所以我想问问,在您用JSON开发的时候是怎样处理JS与.NET的时间格式的问题?


    做最好的自己
    2009年8月13日 8:10
  • 你好 你可以看到刚才例子UTC 转化为字符串的格式是 2009-08-13T08:29:55
    所以你可以通过
    var d=new Data();
    然后通过  getUTCDate 方法 | getUTCDay 方法 | getUTCFullYear 方法 | getUTCHours 方法 | getUTCMilliSeconds 方法 | getUTCMinutes 方法 | getUTCMonth 方法 | getUTCSeconds 方法  这些方法
    获得年月日小时分秒,然后拼接成一个 2009-08-13T08:29:55类似格式的字符串 然后就可以转换了 主要是在中间添加T
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月13日 8:32
    版主
  • 恩。谢谢。
    做最好的自己
    2009年8月13日 13:07
  • 呵呵 不用谢~~
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月14日 1:19
    版主