Max*_*mus 15 javascript rest datetime date momentjs
我的配置是里斯本时区.当我这样做时,new Date()我得到当前的当地日期/时间Fri Apr 28 2017 01:10:55 GMT+0100 (GMT Daylight Time)
当我获得ISO字符串时toISOString(),它将应用时区,我会得到:
2017-04-28T00:10:55.964Z
Run Code Online (Sandbox Code Playgroud)
问题是几分钟前的日期时间是这样的(昨天):
2017-04-27T23:45:05.654Z
Run Code Online (Sandbox Code Playgroud)
我尝试了moment.js(对此我不熟悉),我做了类似的事情
document.write(moment('2017-04-28').format())
Run Code Online (Sandbox Code Playgroud)
但我得到的2017-04-28T00:00:00+01:00不是这个2017-04-28T00:00:00.000Z
我想将此值作为restful方法的参数传递,以自动将其解析为DateTime类型,但如果我从moment.js格式传递输出,那么它将被解析为 2017-04-27 23:00:00.00
如果我new Date()用new Date('2017-04-27')(或日期部分)创建一个新的日期,我只想得到如下的ISO格式,没有时间没有时区
2017-04-28T00:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
是否有类似toISOString()的javascript方法或使用可能的时刻来获取该格式?
无论什么时区或时刻,我只是模拟那是给定日期的午夜.
yns*_*ter 10
你可以试试这个,它对我有用!您将拥有 没有时区影响的ISO 格式
2021 年 1 月 1 日星期五23:10:00 GMT+0100 => 2021-01-01T 23:10:00.000Z
function isoDateWithoutTimeZone(date) {
if (date == null) return date;
var timestamp = date.getTime() - date.getTimezoneOffset() * 60000;
var correctDate = new Date(timestamp);
// correctDate.setUTCHours(0, 0, 0, 0); // uncomment this if you want to remove the time
return correctDate.toISOString();
}
var now= new Date("01-01-2021 23:10:00");
console.log(now.toString());
var returnedDate = isoDateWithoutTimeZone(now);
console.log(returnedDate);Run Code Online (Sandbox Code Playgroud)
目前还不清楚你在问什么.如果您希望UTC日期的小时数始终为0,则将UTC小时数设置为0并使用toISOString,例如
var d = new Date();
d.setUTCHours(0,0,0,0);
console.log(d.toISOString());Run Code Online (Sandbox Code Playgroud)
当然,这将显示UTC日期,该日期可能与生成日期的系统上的日期不同.
也,
new Date('2017-04-27').toISOString();
Run Code Online (Sandbox Code Playgroud)
应返回2017-04-27T00:00:00Z(即它应根据ECMA-262解析为UTC,这与ISO 8601相反,后者将其视为本地),但这在所有使用的实现中都不可靠.
如果您只想获得ISO 8601格式的当前日期,您可以:
if (!Date.prototype.toISODate) {
Date.prototype.toISODate = function() {
return this.getFullYear() + '-' +
('0'+ (this.getMonth()+1)).slice(-2) + '-' +
('0'+ this.getDate()).slice(-2);
}
}
console.log(new Date().toISODate());Run Code Online (Sandbox Code Playgroud)
但是,由于内置的toISOString使用UTC,因此可能会造成混淆.如果需要UTC日期,则:
if (!Date.prototype.toUTCDate) {
Date.prototype.toUTCDate = function() {
return this.getUTCFullYear() + '-' +
('0'+ (this.getUTCMonth()+1)).slice(-2) + '-' +
('0'+ this.getUTCDate()).slice(-2);
}
}
console.log(new Date().toUTCDate());Run Code Online (Sandbox Code Playgroud)
小智 6
old_date = 2021 年 1 月 8 日星期五 16:01:30 GMT+0900
const new_date = old_date.toISOString().substring(0, 10);
Run Code Online (Sandbox Code Playgroud)
new_date = "2021-01-08"
您可以通过使用格式化所需的所有内容,moment.format()然后将多余的Z附加到字符串中来实现此目的。您必须这样做,因为在JS保留用于输出的瞬间之内为Z。
var date = moment('2014-08-28').format("YYYY-MM-DDT00:00:00.000") + "Z";
Run Code Online (Sandbox Code Playgroud)
小提琴示例https://jsfiddle.net/2avxxz6q/
| 归档时间: |
|
| 查看次数: |
37136 次 |
| 最近记录: |