2

可能重复:
DateTime.ParseExact 格式字符串

如何将字符串转换为 DateTime 对象?

例子:

2012 年 10 月 7 日星期日 00:00:00 GMT+0500(巴基斯坦标准时间)

我已经尝试过,DateTime.Parse、Convert.TODateTime 等。没有工作。我收到一个错误,指出它不是有效的 DateTime 字符串。

这是我从 jquery 向 MVC 控制器的操作方法发送日期时间的方式:

$.ajax({
        url: '@Url.Action("actionMethodName", "controllerName")',
        type: "GET",
        cache: false,
        data: {
               startDate: start.toLocaleString(),
               endDate: end.toLocaleString()
         },
         success: function (data) {
         }
});

我需要能够在控制器操作方法中获取日期时间:

public JsonResult actionMethodName(string startDate, string endDate)
{
        if (!string.IsNullOrEmpty(startDate) && !string.IsNullOrEmpty(endDate))
        {
            var start = DateTime.Parse(startDate); //Get exception here
            var end = DateTime.Parse(endDate);     //Get exception here 
        }

        //Rest of the code
}
4

2 回答 2

5

我建议您.toJSON()在 javascriptDate实例上使用该方法,以便将它们序列化为ISO 8601格式:

$.ajax({
    url: '@Url.Action("actionMethodName", "controllerName")',
    type: "GET",
    cache: false,
    data: {
        startDate: start.toJSON(),
        endDate: end.toJSON()
    },
    success: function (data) {
    }
});

现在您不需要在控制器中解析任何内容,您将直接使用日期:

public ActionResult ActionMethodName(DateTime startDate, DateTime endDate)
{
    //Rest of the code
}
于 2012-10-09T14:36:38.683 回答
1

试试DateTime.ParseExact方法。在这个例子中,我解析了(Pakistan Standard Time)字符串的一部分。

var parsedDate = DateTime.ParseExact("Sun Oct 07 2012 00:00:00 GMT+0500", 
    "ddd MMM dd yyyy hh:mm:ss 'GMT'zzz",
    CultureInfo.InvariantCulture);

查看这些 MSDN 文档以获取更多示例。

于 2012-10-09T14:33:51.947 回答