2

我有一个格式为 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

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

4

7 回答 7

7
DateTime d = DateTime.ParseExact(Request.QueryString["dateTime"], "dd/MM/yyyy", CultureInfo.InvariantCulture);
于 2010-08-30T13:02:58.123 回答
5

如何将字符串从请求变成DateTime

DateTime d = DateTime.ParseExact(Request.QueryString["dateTime"], "dd/MM/yyyy", null);
于 2010-08-30T13:02:40.340 回答
2

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。

于 2010-08-30T13:10:30.890 回答
1
// 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

于 2010-08-30T13:02:07.987 回答
1

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

于 2010-08-30T13:03:24.813 回答
0

Try this it should work

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

I faced something similar: DateTime Format in C#

于 2010-08-30T13:17:25.123 回答
0

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

于 2010-08-30T13:13:20.180 回答