C# 将格式化日期从WebMethod返回到JSON

C# 将格式化日期从WebMethod返回到JSON,c#,jquery,ajax,json,C#,Jquery,Ajax,Json,我有一个WebMethod,它在日期{“d”:[“/date(1390411800000)/”]返回: 我想将其格式化为“mmmd,yy”(1月22日,14日),并将其返回给调用的AJAX,但不确定最佳方式。以下是我的AJAX: function getBreadCrumbDate(projectID, statusID) { $.ajax({ url: "view-requests.aspx/getBreadCrumbDate", // Curren

我有一个WebMethod,它在日期{“d”:[“/date(1390411800000)/”]返回:

我想将其格式化为“mmmd,yy”(1月22日,14日),并将其返回给调用的AJAX,但不确定最佳方式。以下是我的AJAX:

function getBreadCrumbDate(projectID, statusID) {
        $.ajax({
            url: "view-requests.aspx/getBreadCrumbDate",   // Current Page, Method
            data: JSON.stringify({
                projectID: projectID,
                statusID: statusID
            }), // parameter map as JSON
            type: "POST", // data has to be POSTed
            contentType: "application/json", // posting JSON content    
            dataType: "JSON",  // type of data is JSON (must be upper case!)
            timeout: 10000,    // AJAX timeout
            success: function (result) {
                $("#divApprovedStatus").html(result.d[0]);
            },
            error: function (xhr, status) {
                alert(status + " - " + xhr.responseText);
            }
        });
    }
现在它打印出/日期(1390411800000)/但需要格式化。是在成功后在jQuery中执行,还是在返回时在C#中执行?无论哪种方式,我都不知道怎么做,可以使用一些指针。 谢谢

它显示了一些红线。。。你想让我告诉你他们说什么吗?

我想说,用C语言使用
ToString([time format])
和正确的格式做这件事最简单

既然你有约会时间?对象,称为
可空
,要访问
日期时间
值,必须使用
日期时间?
属性(所有
可空类型
上都存在
属性)

“2014年1月22日”的格式如下:

以下只是一些语法的通用示例:

// DateTime object
someDateTimeInstance.ToString("MMM d, yy");

// DateTime? object
someNullableDateTimeInstance.Value.ToString("MMM d, yy"); // assumes no nulls

// DateTime? object with null check
String formattedDateTime = (null != someNullableDateTimeInstance 
    ? someNullableDateTimeInstance.Value.ToString("MMM d, yy")
    : string.Empty);
此外,您正在使用实体框架将LINQ语句转换为SQL

基本上,您必须首先提取数据,然后对其进行格式化。即使
CreateDateTime
是一个
Nullable
列,整个表达式都由Linq转换为实体到SQL。而且,Linq转换为实体不知道如何转换方法调用
。ToString(字符串格式)

通过将查询与格式调用分离,我们避免了这个问题。您可以从实体获取数据,并调用
.ToList()
,这将导致EF将数据加载到内存中。然后,您可以使用包含
DateTime?
对象的新列表,并使用
ToString(字符串格式)
获取格式化日期的方法

在您的代码中:

[WebMethod]
public static object getBreadCrumbDate(int projectID, int statusID)
{
    using (dbPSREntities5 myEntities = new dbPSREntities5())
    {
        var thisId = myEntities.tbBreadCrumbs.Where(x => x.ProjectID == projectID && x.StatusID == statusID).Max(x => x.BreadCrumbID);
        var columns = myEntities.tbBreadCrumbs
            .Where(x => x.BreadCrumbID == thisId)
            .Select(x => x.CreateDateTime)
            .ToList();

        var formattedList = columns
            .Select(d => null != d
                ? d.Value.ToString("MMM d, yy")
                : string.Empty) // this is just one example to handle null
            .ToList();

        return formattedList;
    }
}

我想说,在C语言中使用
ToString([time format])
和正确的格式是最简单的

由于您有一个DateTime?对象,称为
可空
,要访问
日期时间
值,必须使用
日期时间?
属性(所有
可空
类型上都存在
属性)

“2014年1月22日”的格式如下:

以下只是一些语法的通用示例:

// DateTime object
someDateTimeInstance.ToString("MMM d, yy");

// DateTime? object
someNullableDateTimeInstance.Value.ToString("MMM d, yy"); // assumes no nulls

// DateTime? object with null check
String formattedDateTime = (null != someNullableDateTimeInstance 
    ? someNullableDateTimeInstance.Value.ToString("MMM d, yy")
    : string.Empty);
此外,您正在使用实体框架将LINQ语句转换为SQL

基本上,您必须首先提取数据,然后对其进行格式化。即使
CreateDateTime
是一个
Nullable
列,整个表达式都由Linq转换为实体到SQL。而且,Linq转换为实体不知道如何转换方法调用
。ToString(字符串格式)

通过将查询与格式调用分离,我们避免了这个问题。您可以从实体获取数据,并调用
.ToList()
,这将导致EF将数据加载到内存中。然后,您可以使用包含
DateTime?
对象的新列表,并使用
ToString(字符串格式)
获取格式化日期的方法

在您的代码中:

[WebMethod]
public static object getBreadCrumbDate(int projectID, int statusID)
{
    using (dbPSREntities5 myEntities = new dbPSREntities5())
    {
        var thisId = myEntities.tbBreadCrumbs.Where(x => x.ProjectID == projectID && x.StatusID == statusID).Max(x => x.BreadCrumbID);
        var columns = myEntities.tbBreadCrumbs
            .Where(x => x.BreadCrumbID == thisId)
            .Select(x => x.CreateDateTime)
            .ToList();

        var formattedList = columns
            .Select(d => null != d
                ? d.Value.ToString("MMM d, yy")
                : string.Empty) // this is just one example to handle null
            .ToList();

        return formattedList;
    }
}

我想说,在C语言中使用
ToString([time format])
和正确的格式是最简单的

由于您有一个DateTime?对象,称为
可空
,要访问
日期时间
值,必须使用
日期时间?
属性(所有
可空
类型上都存在
属性)

“2014年1月22日”的格式如下:

以下只是一些语法的通用示例:

// DateTime object
someDateTimeInstance.ToString("MMM d, yy");

// DateTime? object
someNullableDateTimeInstance.Value.ToString("MMM d, yy"); // assumes no nulls

// DateTime? object with null check
String formattedDateTime = (null != someNullableDateTimeInstance 
    ? someNullableDateTimeInstance.Value.ToString("MMM d, yy")
    : string.Empty);
此外,您正在使用实体框架将LINQ语句转换为SQL

基本上,您必须首先提取数据,然后对其进行格式化。即使
CreateDateTime
是一个
Nullable
列,整个表达式都由Linq转换为实体到SQL。而且,Linq转换为实体不知道如何转换方法调用
。ToString(字符串格式)

通过将查询与格式调用分离,我们避免了这个问题。您可以从实体获取数据,并调用
.ToList()
,这将导致EF将数据加载到内存中。然后,您可以使用包含
DateTime?
对象的新列表,并使用
ToString(字符串格式)
获取格式化日期的方法

在您的代码中:

[WebMethod]
public static object getBreadCrumbDate(int projectID, int statusID)
{
    using (dbPSREntities5 myEntities = new dbPSREntities5())
    {
        var thisId = myEntities.tbBreadCrumbs.Where(x => x.ProjectID == projectID && x.StatusID == statusID).Max(x => x.BreadCrumbID);
        var columns = myEntities.tbBreadCrumbs
            .Where(x => x.BreadCrumbID == thisId)
            .Select(x => x.CreateDateTime)
            .ToList();

        var formattedList = columns
            .Select(d => null != d
                ? d.Value.ToString("MMM d, yy")
                : string.Empty) // this is just one example to handle null
            .ToList();

        return formattedList;
    }
}

我想说,在C语言中使用
ToString([time format])
和正确的格式是最简单的

由于您有一个DateTime?对象,称为
可空
,要访问
日期时间
值,必须使用
日期时间?
属性(所有
可空
类型上都存在
属性)

“2014年1月22日”的格式如下:

以下只是一些语法的通用示例:

// DateTime object
someDateTimeInstance.ToString("MMM d, yy");

// DateTime? object
someNullableDateTimeInstance.Value.ToString("MMM d, yy"); // assumes no nulls

// DateTime? object with null check
String formattedDateTime = (null != someNullableDateTimeInstance 
    ? someNullableDateTimeInstance.Value.ToString("MMM d, yy")
    : string.Empty);
此外,您正在使用实体框架将LINQ语句转换为SQL

基本上,您必须首先提取数据,然后对其进行格式化。即使
CreateDateTime
是一个
Nullable
列,整个表达式都由Linq转换为实体到SQL。而且,Linq转换为实体不知道如何转换方法调用
。ToString(字符串格式)

通过将查询与格式调用分离,我们避免了这个问题。您可以从实体获取数据,并调用
.ToList()
,这将导致EF将数据加载到内存中。然后,您可以使用包含
DateTime?
对象的新列表,并使用
ToString(字符串格式)
获取格式化日期的方法

在您的代码中:

[WebMethod]
public static object getBreadCrumbDate(int projectID, int statusID)
{
    using (dbPSREntities5 myEntities = new dbPSREntities5())
    {
        var thisId = myEntities.tbBreadCrumbs.Where(x => x.ProjectID == projectID && x.StatusID == statusID).Max(x => x.BreadCrumbID);
        var columns = myEntities.tbBreadCrumbs
            .Where(x => x.BreadCrumbID == thisId)
            .Select(x => x.CreateDateTime)
            .ToList();

        var formattedList = columns
            .Select(d => null != d
                ? d.Value.ToString("MMM d, yy")
                : string.Empty) // this is just one example to handle null
            .ToList();

        return formattedList;
    }
}

如果您可以使用datepicker,那么您可以定义一个JavaScript函数

  getDateFromJson: function(jsonDateString, languageCode) {
        return $.datepicker.formatDate($.datepicker.regional[languageCode].dateFormat, new Date(parseInt(jsonDateString.substr(6), 10)));
    }
然后您可以为datepicker定义一个i18n文件,如下所示

jQuery(function ($) {
   $.datepicker.regional['en-us'] = {
       closeText: 'Done',
       prevText: 'Prev',
       nextText: 'Next',
       currentText: 'Today',
       monthNames: ['January', 'February', 'March', 'April', 'May', 'June',
    'July', 'August', 'September', 'October', 'November', 'December'],
       monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
       dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
       dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
    weekHeader: 'Wk',
    dateFormat: 'mm/dd/yy',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: ''
};
$.datepicker.setDefaults($.datepicker.regional['en-us']);
});

//German

   jQuery(function($){
$.datepicker.regional['de'] = {
    closeText: 'schließen',
    prevText: '<zurück',
    nextText: 'Vor>',
    currentText: 'heute',
    monthNames: ['Januar','Februar','März','April','Mai','Juni',
    'Juli','August','September','Oktober','November','Dezember'],
    monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
    'Jul','Aug','Sep','Okt','Nov','Dez'],
    dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
    dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
    dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
    weekHeader: 'KW',
    dateFormat: 'dd.mm.yy',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['de']);
 });
所以你可以定义你的语言