none
请问怎样解析日期和时间的字符串? RRS feed

  • 问题

  • 我有这个格式的字符串:2010-04-29 10:35:14 ,想解析成DateTime类型的。

    看了一下DateTime.Pase() 但没看懂。

    2010年4月29日 3:14

答案

  • 4/19/2010 这种格式是美国标准的,2010-4-19 是中国标准的。DateTime.Parse 在处理 string 时默认是按照当前的 CultureInfo (System.Threading.Thread.CurrentCulture) 来解析的。

    要转换 MM/dd/yyyy 这种格式,用 DateTime.Parse(s, CultureInfo.GetCultureInfo("en-US")),yyyy-MM-dd 的,用 DateTime.Parse(s, CultureInfo.GetCultureInfo("zh-CN"))。


    Mark Zhou
    2010年4月29日 10:09
  • 可以的,我自己跑过,你不妨调试一下,至于说格式的话,时间的格式有很多种,而不仅仅是你所说的上面一种。你不妨参照下msdn的这段代码:

     string[] dateStrings = {"2008-05-01T07:34:42-5:00", 
                "2008-05-01 7:34:42Z", 
                "Thu, 01 May 2008 07:34:42 GMT"};
          foreach (string dateString in dateStrings)
          {
            DateTime convertedDate = DateTime.Parse(dateString);
          }
    
    我做了一点点的修改。
    • 已编辑 络绎 2010年4月29日 3:52 Ad
    • 已标记为答案 mldarkMember 2010年4月29日 11:17
    2010年4月29日 3:46

全部回复

  • 不知道你所说的问题出在什么地方呢?DateTime.Parse(string s)将字符串s转换为时间类型,不过若转换失败(当你的s不符合时间规范的话)会抛出异常,你用DateTime.tryparse(string s, out DateTime result)进行转换则纵使失败也不会抛出异常。若是要自己实现的话,对字符串进行解析即可。

    2010年4月29日 3:31
  • 不知道你所说的问题出在什么地方呢?DateTime.Parse(string s)将字符串s转换为时间类型,不过若转换失败(当你的s不符合时间规范的话)会抛出异常,你用DateTime.tryparse(string s, out DateTime result)进行转换则纵使失败也不会抛出异常。若是要自己实现的话,对字符串进行解析即可。


    DateTime.Parse(string s) 肯定不行的。因为他要求的格式是 04/29/2010 10:35:14
    2010年4月29日 3:43
  • 可以的,我自己跑过,你不妨调试一下,至于说格式的话,时间的格式有很多种,而不仅仅是你所说的上面一种。你不妨参照下msdn的这段代码:

     string[] dateStrings = {"2008-05-01T07:34:42-5:00", 
                "2008-05-01 7:34:42Z", 
                "Thu, 01 May 2008 07:34:42 GMT"};
          foreach (string dateString in dateStrings)
          {
            DateTime convertedDate = DateTime.Parse(dateString);
          }
    
    我做了一点点的修改。
    • 已编辑 络绎 2010年4月29日 3:52 Ad
    • 已标记为答案 mldarkMember 2010年4月29日 11:17
    2010年4月29日 3:46
  • string s = "2010-04-29 10:35:14";
    Response.Write( DateTime.Parse(s).ToString("MM/dd/yyyy hh:mm:ss"));     

    上面我测试结果输出为:04/29/2010 10:35:14


    Anything Is Possible !
    2010年4月29日 3:56
  • 4/19/2010 这种格式是美国标准的,2010-4-19 是中国标准的。DateTime.Parse 在处理 string 时默认是按照当前的 CultureInfo (System.Threading.Thread.CurrentCulture) 来解析的。

    要转换 MM/dd/yyyy 这种格式,用 DateTime.Parse(s, CultureInfo.GetCultureInfo("en-US")),yyyy-MM-dd 的,用 DateTime.Parse(s, CultureInfo.GetCultureInfo("zh-CN"))。


    Mark Zhou
    2010年4月29日 10:09
  • 你好!

         通常还是推荐使用TryParse方法,这个方法即使转换失败也不会抛出异常的,你只需判断返回值是true/false就可以知道转换是否成功了,不用考虑异常捕获了!


    周雪峰
    2010年4月29日 11:23
    版主