我确实阅读了不同的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只是从提供的日期中获取日期
答案 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);