【问题标题】:convert string to date(dd/MM/yyyyy) format in c#在c#中将字符串转换为日期(dd/MM/yyyy)格式
【发布时间】:2010-08-30 13:00:07
【问题描述】:

我有一个格式为 MM/DD/YYYY 的查询字符串

我在 c# 中使用它就像

DateTime d = Request.QueryString["dateTime"].toString();

它给了我很多错误,说日期时间格式无法识别。如果我手动将浏览器地址栏中的日期时间(查询字符串)更改为 dd/mm/yyyy,那么程序就可以正常工作。

我无法更改查询字符串,有没有办法在 c# 中从浏览器获取它,然后转换为日期,如 dd/mm/yyyy?

编辑: 查询字符串:

http://localhost:49543/HM/Admin/ViewDetails.aspx?OrderNo=10&DateCreated=08/30/2010

所以您可以看到创建日期的部分是 MM/DD/YYYY 格式。 我无法从 c# 中获取它。如果我手动将其更改为 30/08/2010,它可以工作

【问题讨论】:

  • 给出一个你需要匹配的示例查询字符串。
  • Request.QueryString["dateTime"] 已经是一个字符串。无需使用 ToString() 方法。
  • DateTime 变量没有格式,它只包含一个日期。只有当您将其转换为字符串时,您才需要格式。

标签: c# date-format


【解决方案1】:
DateTime d = DateTime.ParseExact(Request.QueryString["dateTime"], "dd/MM/yyyy", CultureInfo.InvariantCulture);

【讨论】:

  • 我不认为他的意思是字符串的格式是这样的,而是他想要创建的。他需要发布示例 QS。
  • 嗨,这是真正的 QS:localhost:49543/HM/Admin/…
  • 更改了 http 有间隙,因为它正在变成一个链接:http : // localhost:49543/HM/Admin/ViewDetails.aspx?OrderNo=10&DateCreated=08/30/2010
  • @locusthorde,我修好了。 'yyyy' 必须是小写,而不是我第一次写的大写
  • QS 的格式是“MM/dd/yyyy”(OP 说),而不是“dd/MM/yyyy”。
【解决方案2】:

如何将请求中的字符串转换为DateTime

DateTime d = DateTime.ParseExact(Request.QueryString["dateTime"], "dd/MM/yyyy", null);

【讨论】:

  • 第一个,我试过了,它说iFormatProvider to String不能手动完成。它在那条线上抛出2个错误! (我想要第一种情况 - 如果我的问题令人困惑,对不起!)
  • @locusthorde:好的,很抱歉没有尝试就发布。我将答案更改为对我有用的东西。 (如果输入字符串不是 精确 采用这种 dd/MM/yyyy 格式,它仍然会抛出异常。您可能希望捕获此异常并适当地处理它。)
【解决方案3】:

DateTime.ParseExact 是您寻求的解决方案。 但我建议您使用如下函数验证查询字符串数据:

bool isValidDate(string dtStr) {
    string pattern = @"^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[2][0]\d{2})$)";
    System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(pattern);
    return re.IsMatch(dtStr);
}

编辑 1:除了 ParseExact,您还可以使用以下内容:

DateTime.Parse(dateString, new System.Globalization.CultureInfo("tr-TR"))

土耳其日期时间格式为 dd/MM/YYYY。

【讨论】:

    【解决方案4】:
    // Parsing:
    DateTime d = DateTime.Parse(Request.QueryString["dateTime"].toString());
    
    // Conversion:
    string dString = d.ToWhateverFormatYouWant();
    

    这里有一些关于格式化日期的信息:

    http://msdn.microsoft.com/en-us/library/az4se3k1(VS.71).aspx

    【讨论】:

    • 我想要它在 dateTime 变量类型本身!
    【解决方案5】:

    DateTime.TryParse 可能是个不错的选择..

    【讨论】:

      【解决方案6】:

      试试这个应该可以的

          DateTime d = 
                 DateTime.ParseExact(Request.QueryString["dateTime"], 
                 "dd'/'MM'/'yyyy",    
                 CultureInfo.InvariantCulture);
      

      我遇到过类似的情况:DateTime Format in C#

      【讨论】:

        【解决方案7】:

        您可以使用:DateTime.Now.ToString("dd/MM/yyyy");

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-19
          • 1970-01-01
          • 2016-09-29
          • 1970-01-01
          • 2011-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多