我有一个在日期{“d”返回的WebMethod:[“/ Date(1390411800000)/”]}:
[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();
return columns;
}
}
我希望将其格式化为“mmm dd,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#时做到最好?无论哪种方式,我不知道该怎么做,可以使用一些指针。 谢谢!
它显示了一些红线......你想让我告诉你他们说什么吗?
答案 0 :(得分:2)
我认为使用ToString([time format])
以正确的格式在C#中进行此操作最简单。
既然你有一个DateTime?要访问Nullable<DateTime>
值的对象(称为DateTime
),您必须使用Value
的{{1}}属性(DateTime?
属性存在于所有{ {1}}。
对于“1月22日,14日”,格式如下:
这些只是语法的一些通用示例:
Value
此外,您正在使用Entity Framework将您的LINQ语句转换为SQL。
基本上你必须首先提取数据,然后格式化它。即使Nullable Types
是// 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-To-Entities转换为SQL。而且,Linq-To-Entities不知道如何翻译方法调用CreateDateTime
。
通过将查询与格式调用分开,我们避免了这个问题。您从实体获取数据,并调用Nullable<DateTime>
,这将导致EF将数据加载到内存中。然后,您可以使用包含.ToString(string format)
个对象的新列表,并使用.ToList()
方法获取格式化日期。
在您的代码中
DateTime?
答案 1 :(得分:1)
如果你可以使用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']);
});
所以你可以为它定义你的语言和日期格式。
现在,当您需要日期时,只需调用此函数
即可getDateFromJson(result.d[0], 'en-us'); //for USA Date
getDateFromJson(result.d[0], 'de'); //for German Date
希望这能指出你正确的方向!