Moment JS-在不考虑时区的情况下获取日期

时间:2018-07-25 21:02:46

标签: javascript momentjs

我确实阅读了不同的StackOverflow帖子,他们建议从一开始就使用.utc,但是它不起作用

注意:我在PST区域

const start = '2018-06-10T21:00:00-04:00';
const end = '2018-06-10T23:00:00-04:00';
const noconversion = moment.utc(start).format('MM/DD/YYYY');
const converted = moment(end).format('MM/DD/YYYY');

当前输出:

noconversion-2018-06-11

已转换-2018-06-11

预期输出: 06/06/2018只是从提供的日期中获取日期

CODEPEN Link

3 个答案:

答案 0 :(得分:4)

您尝试过parseZone吗?

moment.parseZone(end).format('MM/DD/YYYY');

那应该保持您的UTC偏移量被应用。然后,如果您想保存UTC偏移量,也可以计算它:

moment.parseZone(end).format('MM/DD/YYYY').utcOffset();

答案 1 :(得分:0)

我建议的解决方案将忽略时区本身。它总是只带日期。这样做可能是一种复杂的方法,但它始终对您有用。

const start = '2018-06-10T21:00:00-04:00'.split('-').slice(0, -1).join('-');
const end = '2018-06-10T23:00:00-04:00'.split('-').slice(0, -1).join('-');
const noconversion = moment(start).format('MM/DD/YYYY');
const converted = moment(end).format('MM/DD/YYYY');

答案 2 :(得分:0)

我不知道您是否会喜欢我的解决方案,只是想一下,如果您想忽略时区,那为什么不从字符串本身来。如果您不喜欢,请不要投票。这只是开箱即用的想法。

function convertToDate(date_string) {
    var date = date_string.indexOf('T') > -1 ? new Date(date_string.split('T')[0]) : date_string.indexOf(' ') > -1 ? new Date(date_string.split(' ')[0]) : new Date(date_string.substring(0,10));
    return (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
}

OR

function convertToDate(date_string) {
    var date = date_string.indexOf('T') > -1 ? date_string.split('T')[0].split('-') : date_string.indexOf(' ') > -1 ? date_string.split(' ')[0].split('-') : date_string.substring(0,10).split('-');
    return date[1] + "/" + date[2] + "/" + date[0];
}

const start = '2018-06-10T21:00:00-04:00';
const converted = convertToDate(start);