如何从 webservice c# 正确格式化 returns 的日期
how to correctly format date that returns from webservice c#
在我的 .js 文件中,我调用了一个 c# 网络服务。
function getDetailsFromDb(id_mac, id_instance) {
$.ajax({
type: "POST",
url: "webMethods/GetData.asmx/getServicesById",
dataType: "json",
data: JSON.stringify({
idMacchina: id_mac,
idIstanza: id_instance
}),
contentType: "application/json; charset=utf-8",
success: function (msg) {
var itemsLoaded = msg.d;
},
error: function (err) {
alert(err);
}
});
此函数 returns 我从数据库中获取的一组对象。
这些字段之一,returns 日期,格式如下:
/Date(1467878700750)/
现在,我需要从该字符串中获取日、月、年、小时、分钟、秒和毫秒。
我怎样才能得到这些信息?
提前致谢
这看起来像是大纪元(1970 年 1 月 1 日,格林威治标准时间午夜)以来的毫秒数。在 JavaScript 中,您可以通过以下方式为其创建一个 Date
实例:
- 从字符串中分离数字
- 将其转换为数字
- 然后使用
new Date
,它接受自纪元以来的毫秒数:
例如,
var theString = "/Date(1467878700750)/";
var theNumber = +theString.match(/\/Date\((\d+)\)\//)[1];
console.log(theNumber);
var dt = new Date(theNumber);
console.log(dt.toString());
如果您愿意,可以在转换 JSON 时在 JSON 中转换 所有 ,方法是使用 reviver函数:
var rexDateString = /^\/Date\((\d+)\)\/$/;
function dateHandlingReviver(k, v) {
var match;
if (typeof v === "string") {
match = v.match(rexDateString);
if (match) {
return new Date(+match[1]);
}
}
return v;
}
var json = '{"date1":"/Date(1467878700750)/","obj":{"date2":"/Date(1467871700750)/"}}';
var result = JSON.parse(json, dateHandlingReviver);
console.log(result);
(请注意,上面控制台中针对这些日期显示的 "2016-07-07T08:05:00.750Z"
正是 Stack Snippets 控制台显示 Date
对象的方式。)
您可以通过设置 dataType: "text"
而不是 dataType: "json"
来更改您的查询以告诉 jQuery 不要 为您解析它,并且然后使用 JSON.parse
和那个 reviver 自己解析它。
https://jsfiddle.net/rhcwxLav/
var d = new Date();
d.setTime(1467878700750);
document.write(d);
}
在我的 .js 文件中,我调用了一个 c# 网络服务。
function getDetailsFromDb(id_mac, id_instance) {
$.ajax({
type: "POST",
url: "webMethods/GetData.asmx/getServicesById",
dataType: "json",
data: JSON.stringify({
idMacchina: id_mac,
idIstanza: id_instance
}),
contentType: "application/json; charset=utf-8",
success: function (msg) {
var itemsLoaded = msg.d;
},
error: function (err) {
alert(err);
}
});
此函数 returns 我从数据库中获取的一组对象。 这些字段之一,returns 日期,格式如下:
/Date(1467878700750)/
现在,我需要从该字符串中获取日、月、年、小时、分钟、秒和毫秒。 我怎样才能得到这些信息?
提前致谢
这看起来像是大纪元(1970 年 1 月 1 日,格林威治标准时间午夜)以来的毫秒数。在 JavaScript 中,您可以通过以下方式为其创建一个 Date
实例:
- 从字符串中分离数字
- 将其转换为数字
- 然后使用
new Date
,它接受自纪元以来的毫秒数:
例如,
var theString = "/Date(1467878700750)/";
var theNumber = +theString.match(/\/Date\((\d+)\)\//)[1];
console.log(theNumber);
var dt = new Date(theNumber);
console.log(dt.toString());
如果您愿意,可以在转换 JSON 时在 JSON 中转换 所有 ,方法是使用 reviver函数:
var rexDateString = /^\/Date\((\d+)\)\/$/;
function dateHandlingReviver(k, v) {
var match;
if (typeof v === "string") {
match = v.match(rexDateString);
if (match) {
return new Date(+match[1]);
}
}
return v;
}
var json = '{"date1":"/Date(1467878700750)/","obj":{"date2":"/Date(1467871700750)/"}}';
var result = JSON.parse(json, dateHandlingReviver);
console.log(result);
(请注意,上面控制台中针对这些日期显示的 "2016-07-07T08:05:00.750Z"
正是 Stack Snippets 控制台显示 Date
对象的方式。)
您可以通过设置 dataType: "text"
而不是 dataType: "json"
来更改您的查询以告诉 jQuery 不要 为您解析它,并且然后使用 JSON.parse
和那个 reviver 自己解析它。
https://jsfiddle.net/rhcwxLav/
var d = new Date();
d.setTime(1467878700750);
document.write(d);
}