ASP.NET MVC JsonResult日期格式


248

我有一个控制器操作,可以有效地简单返回模型的JsonResult。因此,在我的方法中,我有以下内容:

return new JsonResult(myModel);

除一个问题外,此方法效果很好。模型中有一个date属性,它似乎在Json结果中返回,如下所示:

"\/Date(1239018869048)\/"

我应该如何处理日期,以便以所需的格式返回日期?或者如何在脚本中处理上面的这种格式?


我已经将我的json净结果发布到相同的问题,它将日期转换为iso格式,使其更易于使用。 stackoverflow.com/questions/15778599/...
基兰

请查看下面的链接。直截了当。stackoverflow.com/a/60392503/5962626
Mohamedasiq

Answers:


195

只是为了扩展casperOne的答案

JSON规范并不考虑日期值。MS必须打个电话,他们选择的路径是利用字符串的javascript表示形式的一个小技巧:字符串文字“ /”与“ \ /”相同,而字符串文字永远不会序列化为“ \ /”(即使“ \ /”也必须映射到“ \\ /”)。

有关更好的说明,请参见http://msdn.microsoft.com/zh-cn/library/bb299886.aspx#intro_to_json_topic2(向下滚动至“从JavaScript文字到JSON”)

JSON的痛处之一是缺少日期/时间文字。许多人在初次遇到JSON时会感到惊讶和失望。关于缺少日期/时间文字的简单解释(是否可以安慰)是JavaScript从未使用过:在JavaScript中对日期和时间值的支持完全通过Date对象提供。因此,大多数使用JSON作为数据格式的应用程序通常倾向于使用字符串或数字来表示日期和时间值。如果使用字符串,通常可以期望它采用ISO 8601格式。如果改用数字,则该值通常是指自纪元以来的世界标准时间(UTC)的毫秒数,其中纪元定义为1970年1月1日午夜(UTC)。再次,这仅仅是一个约定,并不是JSON标准的一部分。如果要与另一个应用程序交换数据,则需要检查其文档以查看其如何在JSON文字中编码日期和时间值。例如,Microsoft的ASP.NET AJAX都不使用所描述的约定。而是将.NET DateTime值编码为JSON字符串,其中字符串的内容为/ Date(ticks)/,而ticks表示自历元(UTC)起的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ \ / Date(628318530718)\ /”。NET AJAX均不使用所描述的约定。而是将.NET DateTime值编码为JSON字符串,其中字符串的内容为/ Date(ticks)/,而ticks表示自历元(UTC)起的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ \ / Date(628318530718)\ /”。NET AJAX均不使用所描述的约定。而是将.NET DateTime值编码为JSON字符串,其中字符串的内容为/ Date(ticks)/,而ticks表示自历元(UTC)起的毫秒数。因此,1989年11月29日上午4:55:30,以UTC编码为“ \ / Date(628318530718)\ /”。

一个解决方案是将其解析出来:

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));

但是,我听说有一个设置可以让序列化程序DateTime使用new Date(xxx)语法输出对象。我会尽力找出来。


的第二个参数JSON.parse()接受一个reviver函数,该函数规定在返回值之前原始值是如何产生的。

这是日期的示例:

var parsed = JSON.parse(data, function(key, value) {
  if (typeof value === 'string') {
    var d = /\/Date\((\d*)\)\//.exec(value);
    return (d) ? new Date(+d[1]) : value;
  }
  return value;
});

请参阅JSON.parse()的文档


1
谢谢,解析会去哪里呢?
乔恩·阿奇威

我发布的代码是JavaScript。您可以将其放入客户代码中。
JPot09年

6
您可以将js缩短为新的Date(parseInt(dateString.replace(/ \ / Date \((\ d +)\)\ // gi,“ $ 1”)))
kͩeͣmͮpͥ2009年

6
实际上,由于日期也可能表示为-ve数字,因此正则表达式更正确地替换为replace(/ \ / Date \((-?\ d +)\)\ // gi,“ $ 1”)
Dokie

1
@HarshilShah这是的第二个参数parseInt()。它告诉函数在以10为底的数字系统中提取一个整数。这是一个基数。如果放在8那里,它将提取一个八进制数。
AnalogWeapon

99

这是我在Javascript中的解决方案-非常类似于JPot,但是更短(可能更快一点):

value = new Date(parseInt(value.substr(6)));

“ value.substr(6)”取出“ / Date(”部分,并且parseInt函数将忽略末尾出现的非数字字符。

编辑:我有意地省略了基数(parseInt的第二个参数);见下面我的评论。另外,请注意,ISO-8601日期优先于此旧格式-因此,通常不应将这种格式用于新开发。有关使用ISO-8601格式序列化日期的绝佳选择,请参见出色的Json.NET库。

对于ISO-8601格式的JSON日期,只需将字符串传递给Date构造函数即可:

var date = new Date(jsonDate); //no ugly parsing needed; full timezone support

1
+1我采用了您的简单解决方案并将其放在递归函数中。看到这里:danielsadventure.info/dotnetdatetime
维维安河

7
使用parseInt时,应始终指定一个基数。[来源]:developer.mozilla.org/en-US/docs/JavaScript/Reference/...
约翰Zabroski

6
@JohnZabroski:每个规则都有其例外。.NET日期序列化程序永远不会返回带有前导零的整数,因此我们可以放心地忽略基数。
罗伊·廷克

4
我们几乎是同一件事。我们用来value.substr(6, 13)删除其他非数字字符。但是,如果您这样做,则1938年4月26日之前的所有日期都是无效的!我们不知道parseInt会忽略非数字字符。谢谢!
拉尔夫·詹森

2
@JohnZabroski- parseIntECMAScript ed 5(2011)开始,应忽略前导零。
RobG

69

有很多答案可以处理客户端,但是如果需要,您可以更改输出服务器端。

有几种方法可以解决此问题,我将从基础知识开始。您必须子类化JsonResult类,并重写ExecuteResult方法。从那里,您可以采用几种不同的方法来更改序列化。

方法1: 默认实现使用JsonScriptSerializer。如果您查看文档,则可以使用RegisterConverters方法添加自定义JavaScriptConverters。但是,这有一些问题:JavaScriptConverter序列化为字典,即它接受一个对象并序列化为Json字典。为了使对象序列化为字符串,它需要一些技巧,请参阅post。这种特殊的技巧也会使字符串转义。

public class CustomJsonResult : JsonResult
{
    private const string _dateFormat = "yyyy-MM-dd HH:mm:ss";

    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }

        HttpResponseBase response = context.HttpContext.Response;

        if (!String.IsNullOrEmpty(ContentType))
        {
            response.ContentType = ContentType;
        }
        else
        {
            response.ContentType = "application/json";
        }
        if (ContentEncoding != null)
        {
            response.ContentEncoding = ContentEncoding;
        }
        if (Data != null)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            // Use your custom JavaScriptConverter subclass here.
            serializer.RegisterConverters(new JavascriptConverter[] { new CustomConverter });

            response.Write(serializer.Serialize(Data));
        }
    }
}

方法2(推荐): 第二种方法是从重写的JsonResult开始,然后使用另一个Json序列化程序, Json.NET序列化器。这不需要方法1的黑客。这是我对JsonResult子类的实现:

public class CustomJsonResult : JsonResult
{
    private const string _dateFormat = "yyyy-MM-dd HH:mm:ss";

    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException("context");
        }

        HttpResponseBase response = context.HttpContext.Response;

        if (!String.IsNullOrEmpty(ContentType))
        {
            response.ContentType = ContentType;
        }
        else
        {
            response.ContentType = "application/json";
        }
        if (ContentEncoding != null)
        {
            response.ContentEncoding = ContentEncoding;
        }
        if (Data != null)
        {
            // Using Json.NET serializer
            var isoConvert = new IsoDateTimeConverter();
            isoConvert.DateTimeFormat = _dateFormat;
            response.Write(JsonConvert.SerializeObject(Data, isoConvert));
        }
    }
}

用法示例:

[HttpGet]
public ActionResult Index() {
    return new CustomJsonResult { Data = new { users=db.Users.ToList(); } };
}

其他学分: 詹姆斯·牛顿·金


那其他格式如货币,身份证号码,电话等等呢?从ModelMetadata获取这些格式并使用它们将Models序列化为Json不是更好的方法吗?怎么样 ?
卢西亚诺

1
这是最好的解决方案(Perishable Dave的答案)。服务器负责提供正确的日期格式。还有一个自定义的JsonResult可带来更多好处和控制。我建议建议实现一个辅助方法“ CustomJson(data)”,该方法可实例化CustomJsonResult,因为存在“ Json(data)”,该实例使用其数据实例化JsonResult。
体育

2
如果使用这两种方法之一,都需要进行更正-第一行应为:private const string _dateFormat =“ yyyy-MM-ddTHH:mm:ss”; 我加了“ T”。
Dominick


20

我发现,创建一个新的JsonResult和返回是不能令人满意的-不必更换所有的呼叫,return Json(obj)return new MyJsonResult { Data = obj }是一种痛苦。


所以我想,为什么不劫持一个JsonResult使用ActionFilter

public class JsonNetFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if (filterContext.Result is JsonResult == false)
        {
            return;
        }

        filterContext.Result = new JsonNetResult(
            (JsonResult)filterContext.Result);
    }

    private class JsonNetResult : JsonResult
    {
        public JsonNetResult(JsonResult jsonResult)
        {
            this.ContentEncoding = jsonResult.ContentEncoding;
            this.ContentType = jsonResult.ContentType;
            this.Data = jsonResult.Data;
            this.JsonRequestBehavior = jsonResult.JsonRequestBehavior;
            this.MaxJsonLength = jsonResult.MaxJsonLength;
            this.RecursionLimit = jsonResult.RecursionLimit;
        }

        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            var isMethodGet = string.Equals(
                context.HttpContext.Request.HttpMethod, 
                "GET", 
                StringComparison.OrdinalIgnoreCase);

            if (this.JsonRequestBehavior == JsonRequestBehavior.DenyGet
                && isMethodGet)
            {
                throw new InvalidOperationException(
                    "GET not allowed! Change JsonRequestBehavior to AllowGet.");
            }

            var response = context.HttpContext.Response;

            response.ContentType = string.IsNullOrEmpty(this.ContentType) 
                ? "application/json" 
                : this.ContentType;

            if (this.ContentEncoding != null)
            {
                response.ContentEncoding = this.ContentEncoding;
            }

            if (this.Data != null)
            {
                response.Write(JsonConvert.SerializeObject(this.Data));
            }
        }
    }
}

这可以应用于返回a的任何方法JsonResult来使用JSON.Net:

[JsonNetFilter]
public ActionResult GetJson()
{
    return Json(new { hello = new Date(2015, 03, 09) }, JsonRequestBehavior.AllowGet)
}

这将以

{"hello":"2015-03-09T00:00:00+00:00"}

如预期的!


如果您不介意is在每个请求中调用比较,可以将其添加到您的FilterConfig

// ...
filters.Add(new JsonNetFilterAttribute());

现在,您所有的JSON都将使用JSON.Net(而不是内置)进行序列化JavaScriptSerializer


这是唯一提供可靠方法(可以设置为全局或粒度)而没有奇怪的javascript内联的答案。我可以投票两次吗?
T-moty

19

使用jQuery自动转换日期 $.parseJSON

注意:此答案提供了一个jQuery扩展,其中添加了自动ISO和.net日期格式支持。

由于您使用的是Asp.net MVC,我怀疑您在客户端使用的是jQuery。我建议您阅读这篇博客文章,其中包含如何使用的代码$.parseJSON自动为您转换日期。

代码支持您提到的Asp.net格式日期以及ISO格式日期。使用会为您自动格式化所有日期$.parseJSON()


2
起初,我认为这种方法非常有效。(有关如何在$ .ajaxSetup()中注册转换器的信息,请参见文章结尾的评论。)但是,此解决方案的一大缺点是它不支持Epoc(1970)之前的日期...现在我已经决定只放弃.asmx文件并切换到WebAPI,该API的日期格式更好(使用JSON.NET),并且可以避免所有此类麻烦。
2014年

11

客户端和服务器之间的Ajax通信通常涉及JSON格式的数据。尽管JSON适用于字符串,数字和布尔值,但由于ASP.NET对其进行序列化的方式,日期可能会遇到一些困难。由于它没有日期的任何特殊表示形式,因此它们被序列化为纯字符串。作为一种解决方案,ASP.NET Web窗体和MVC的默认序列化机制以特殊格式-/ Date(ticks)/-对日期进行序列化,其中ticks是自1970年1月1日以来的毫秒数。

该问题可以通过两种方式解决:

客户端

将接收到的日期字符串转换为数字,并使用带有ticks作为参数的date类的构造函数创建一个date对象。

function ToJavaScriptDate(value) {
  var pattern = /Date\(([^)]+)\)/;
  var results = pattern.exec(value);
  var dt = new Date(parseFloat(results[1]));
  return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}

服务器端

先前的解决方案使用客户端脚本将日期转换为JavaScript Date对象。您还可以使用服务器端代码,以您选择的格式序列化.NET DateTime实例。要完成此任务,您需要创建自己的ActionResult,然后以所需的方式序列化数据。

参考:http : //www.developer.com/net/dealing-with-json-dates-in-asp.net-mvc.html


7

我有同样的问题,没有返回实际的日期值,我只是在上面使用了ToString(“ dd MMM yyyy”)。然后在我的JavaScript中,我使用了新的Date(datevalue),其中datevalue可能是“ 2009年1月1日”。


1
这应该有更多的支持。至少与最受好评的影片一样好。比切碎琴弦更优雅。就个人而言,我使用了此方法,但并没有在前端重新创建日期对象,因为我只需要显示它,所以我只显示了格式(略有不同)的字符串。感谢小费,@ Joe!
vbullinger 2012年

1
它确实打破了关注点的分离,即,将关注点如何显示在后端的前端。但是,它仍然更加优雅。
A. Murray

1
为什么不使用不那么脆弱的东西ToString("o")呢?
2015年

ECMA-262不支持“ dd MMM yyyy”,因此您不应期望内置解析器对其进行解析
RobG

3

看到这个线程:

http://forums.asp.net/p/1038457/1441866.aspx#1441866

基本上,虽然Date()格式是有效的javascript,但它不是有效的JSON(有区别)。如果您想使用旧格式,则可能必须自己创建外观并转换值,或者找到一种方法来获取类型中的类型的序列化器,JsonResult并使用日期的自定义格式。


以为您的意思是“新的Date()格式是有效的javascript时” [请注意“ new”关键字]?
JPot

2

不是最优雅的方法,但这对我有用:

var ms = date.substring(6, date.length - 2);
var newDate = formatDate(ms);


function formatDate(ms) {

    var date = new Date(parseInt(ms));
    var hour = date.getHours();
    var mins = date.getMinutes() + '';
    var time = "AM";

    // find time 
    if (hour >= 12) {
        time = "PM";
    }
    // fix hours format
    if (hour > 12) {
        hour -= 12;
    }
    else if (hour == 0) {
        hour = 12;
    }
    // fix minutes format
    if (mins.length == 1) {
        mins = "0" + mins;
    }
    // return formatted date time string
    return date.getMonth() + 1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + hour + ":" + mins + " " + time;
}

2

我一直在努力解决此问题,因为上述答案都没有真正帮助我。我正在使用jquery周日历,并且需要我的日期才能在服务器上以及页面上的本地显示时区信息。经过相当多的挖掘,我找到了可以帮助他人的解决方案。

我使用的是asp.net 3.5、2008,asp.net MVC 2和jquery周历,

首先,我使用的是Steven Levithan编写的可帮助处理客户端日期的库,即Steven Levithan的日期库。isoUtcDateTime格式非常适合我需要的内容。在我的jquery AJAX调用中,我使用了带有isoUtcDateTime格式的库随附的格式函数,并且当ajax调用命中我的操作方法时,datetime Kind设置为local并反映了服务器时间。

当我通过AJAX将日期发送到我的页面时,我使用“ ddd,dd MMM yyyy HH':​​'mm':'s'GMT'zzzz”格式化日期,将它们作为文本字符串发送。客户端可以使用以下格式轻松转换此格式

var myDate = new Date(myReceivedDate);

这是我的完整解决方案,减去Steve Levithan的源代码,您可以下载该源代码:

控制器:

public class HomeController : Controller
{
    public const string DATE_FORMAT = "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'zzzz";

    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }


    public JsonResult GetData()
    {
        DateTime myDate = DateTime.Now.ToLocalTime();

        return new JsonResult { Data = new { myDate = myDate.ToString(DATE_FORMAT) } };
    }

    public JsonResult ReceiveData(DateTime myDate)
    {
        return new JsonResult { Data = new { myDate = myDate.ToString(DATE_FORMAT) } };
    }
}

Javascript:

<script type="text/javascript">

function getData() {
    $.ajax({
        url: "/Home/GetData",
        type: "POST",
        cache: "false",
        dataType: "json",
        success: function(data) {
            alert(data.myDate);
            var newDate = cleanDate(data.myDate);
            alert(newDate);
            sendData(newDate);
        }
    });
} 

function cleanDate(d) {
    if (typeof d == 'string') {
        return new Date(d) || Date.parse(d) || new Date(parseInt(d));
    }
    if (typeof d == 'number') {
        return new Date(d);
    }
    return d;
}

function sendData(newDate) {
    $.ajax({
        url: "/Home/ReceiveData",
        type: "POST",
        cache: "false",
        dataType: "json",
        data:
        {
            myDate: newDate.format("isoUtcDateTime")
        },
        success: function(data) {
            alert(data.myDate);
            var newDate = cleanDate(data.myDate);
            alert(newDate);
        }
    });
}

// bind myButton click event to call getData
$(document).ready(function() {
    $('input#myButton').bind('click', getData);
});
</script>

我希望这个快速的示例可以帮助其他处于与我相同情况的人。此时,它似乎可以很好地与Microsoft JSON序列化一起使用,并且可以使我的日期在各个时区保持正确。


如果可以指定日期的格式,则应使用扩展的ISO 8601,因为这是ECMA-262需要支持的唯一格式。
RobG '17

2

在淘汰表中处理日期的更好方法是使用矩量库并像老板一样处理日期。您可以轻松处理/ Date(-62135578800000)/之类的日期。无需理会您在控制器中序列化日期的方式。

function jsonToDate(date,format) {
   return moment(date).format(format);
}

用起来像

var formattedDate = jsonToDate(date,'MM/DD/YYYY')

moment.js在日期上支持许多日期时间格式和实用程序功能。


1

格式化查询中的日期。

var _myModel = from _m in model.ModelSearch(word)
    select new { date = ((DateTime)_m.Date).ToShortDateString() };

此解决方案的唯一问题是,如果任何日期值都为空,则不会获得任何结果。为了解决这个问题,您可以在查询中放入条件语句,然后选择忽略日期空值的日期,也可以设置查询以获取所有结果,然后使用foreach循环遍历所有信息并分配一个值直到所有的日期都为空,然后再进行新的选择。

两者的示例:

var _test = from _t in adc.ItemSearchTest(word)
                        where _t.Date != null
                        select new { date = ((DateTime)_t.Date).ToShortDateString() };

第二个选项完全需要另一个查询,因此您可以将值分配给所有null。这和foreach循环必须在选择值的查询之前。

var _testA = from _t in adc.ItemSearchTest(word)
                         select _i;

            foreach (var detail in _testA)
            {
                if (detail.Date== null)
                {
                    detail.Date= Convert.ToDateTime("1/1/0001");
                }
            }

我发现一个想法比所有JavaScript示例都容易。


1

您可以使用以下方法:

String.prototype.jsonToDate = function(){
    try{
        var date;
        eval(("date = new " + this).replace(/\//g,''));
        return date;
    } 
    catch(e){
        return new Date(0);
    }
};

1

0

在您的cshtml中,

<tr ng-repeat="value in Results">                
 <td>{{value.FileReceivedOn | mydate | date : 'dd-MM-yyyy'}} </td>
</tr>

在您的JS文件中,也许是app.js,

在app.controller之外,添加以下过滤器。

在这里,“ mydate”是您用来解析日期的函数。这里的“ app”是包含angular.module的变量

app.filter("mydate", function () {
    var re = /\/Date\(([0-9]*)\)\//;
    return function (x) {
        var m = x.match(re);
        if (m) return new Date(parseInt(m[1]));
        else return null;
    };
});

这是对angularjs非常特定的,并非所有人都使用它,但这对我有用,谢谢。
Lauro182

0

在页面中添加jQuery ui插件。

function JsonDateFormate(dateFormate, jsonDateTime) {
    return $.datepicker.formatDate(dateFormate, eval('new ' + jsonDateTime.slice(1, -1)));
};

0

不是没有,但是还有另一种方式。首先,构造您的LINQ查询。然后,构造一个对枚举结果的查询,并应用适合您的任何格式类型。

var query = from t in db.Table select new { t.DateField };
var result = from c in query.AsEnumerable() select new { c.DateField.toString("dd MMM yyy") };

我不得不说,多余的步骤很烦人,但效果很好。


0

对我有用的是创建一个包含date属性作为字符串的视图模型。从域模型分配DateTime属性,并在将值分配给viewmodel的同时调用date属性的.ToString()。

MVC操作方法的JSON结果将以与视图兼容的格式返回日期。

查看模型

public class TransactionsViewModel
{
    public string DateInitiated { get; set; }
    public string DateCompleted { get; set; }
}

领域模型

public class Transaction{
   public DateTime? DateInitiated {get; set;}
   public DateTime? DateCompleted {get; set;}
}

控制器动作方法

public JsonResult GetTransactions(){

var transactions = _transactionsRepository.All;
        var model = new List<TransactionsViewModel>();

        foreach (var transaction in transactions)
        {
            var item = new TransactionsViewModel
            {
                ...............
                DateInitiated = transaction.DateInitiated.ToString(),
                DateCompleted = transaction.DateCompleted.ToString(),
            };

            model.Add(item);
        }
        return Json(model, JsonRequestBehavior.AllowGet);
}


0

烦人,不是吗?

我的解决方案是更改WCF服务,使其以更易读的格式(非Microsoft)返回DateTimes。请注意,以下是“ UpdateDateOriginal”,这是WCF的默认日期格式,而我的“ UpdateDate”,其格式设置为更具可读性。

在此处输入图片说明

方法如下:

更改WCF日期格式

希望这可以帮助。


0

我发现这是更改服务器端最简单的方法。

using System.Collections.Generic;
using System.Web.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;

namespace Website
{
    /// <summary>
    /// This is like MVC5's JsonResult but it uses CamelCase and date formatting.
    /// </summary>
    public class MyJsonResult : ContentResult
    {
        private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver(),
            Converters = new List<JsonConverter> { new StringEnumConverter() }
        };

        public FindersJsonResult(object obj)
        {
            this.Content = JsonConvert.SerializeObject(obj, Settings);
            this.ContentType = "application/json";
        }
    }
}

0

我遇到了一些有关JSON日期的问题,并决定通过解决SQL中的日期问题来解决该问题。将日期格式更改为字符串格式

select flddate from tblName

select flddate, convert(varchar(12), flddate, 113) as fldDateStr from tblName

通过使用fldDateStr,问题消失了,我仍然可以将date字段用于排序或其他目的。


0

它返回服务器日期格式。您需要定义自己的功能。

function jsonDateFormat(jsonDate) {
  // Changed data format;
  return (new Date(parseInt(jsonDate.substr(6)))).format("mm-dd-yyyy / h:MM tt");
};

0

这是我编写的一些JavaScript代码,该代码<input type="date">从ASP.NET MVC传递的日期开始设置值。

var setDate = function(id, d) {
  if (d !== undefined && d !== null) {
    var date = new Date(parseInt(d.replace("/Date(", "").replace(")/", ""), 10));
    var day = ('0' + date.getDate()).slice(-2);
    var month = ('0' + (date.getMonth() + 1)).slice(-2);
    var parsedDate = date.getFullYear() + "-" + (month) + "-" + (day);
    $(id).val(parsedDate);
  }
};

您可以这样调用此函数:

setDate('#productCommissionStartDate', data.commissionStartDate);

commissionStartDateMVC传递的JSON日期在哪里。


-1

最简单的一个:

var milisegundos = parseInt(data.replace(“ / Date(”,“”).replace(“)/”,“”)));
Var newDate =新日期(milisegundos)。toLocaleDateString(“ en-UE”);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.