在JavaScript中将DateTimeOffset字符串值转换为Date对象

5

我正在使用ASP.NET,以下是我的字符串:

2018-12-04T13:53:42.6785734+07:00

我希望将字符串转换为日期对象并格式化输出字符串。
我的目标:04/12/2018 13:53:42 我尝试了以下方法,但结果错误:

var dt = new Date('2018-12-04T13:53:42.6785734+07:00'); 

var day = dt.getDay(),
    month = dt.getMonth(),
    year = dt.getFullYear(),
    hours = dt.getHours(),
    minutes = dt.getMinutes(),
    seconds = dt.getSeconds();
    
// 2/11/2018 13:53:42    
console.log(day + '/' + month + '/' + year + ' ' + hours + ':' + minutes + ':' + seconds);


getDate() not getDay(). Also, in JS month start from 0. So you will have to use getMonth() + 1 - Rajesh
它将正确返回日期,但使用当前时区而不是接收到的字符串时区。例如,如果您当前的时区是+8:00,则时区+7:00将被转换为它。 - binariedMe
4个回答

4

var dt = new Date('2018-12-04T13:53:42.6785734+07:00'); 

var day = dt.getDate(),
month = dt.getMonth(),
year = dt.getFullYear(),
hours = dt.getHours(),
minutes = dt.getMinutes(),
seconds = dt.getSeconds();

// 2/11/2018 13:53:42    
console.log(day + '/' + (month + 1) + '/' + year + ' ' + hours + ':' + minutes + ':' + seconds);

我把你的代码修改为这样,请尝试:

var dt = new Date('2018-12-04T13:53:42.6785734+07:00'); 

var day = dt.getDate(),
month = dt.getMonth(),
year = dt.getFullYear(),
hours = dt.getHours(),
minutes = dt.getMinutes(),
seconds = dt.getSeconds();

console.log(day + '/' + (month + 1) + '/' + year + ' ' + hours + ':' + minutes + ':' + seconds);

0

直接操作原始字符串而不将其转换为日期对象是否可行?我无法确定测试用例是什么,但假设小时数的长度相同(04,12),我认为以下代码应该可以工作。

let dt = '2018-12-04T13:53:42.6785734+07:00';
let  dArr = dt.substr(0,10).split('-');
let year = dArr[0];
let month = dArr[1];
let day = dArr[2];
let time = dt.substr(11,8);

let str = month+'/'+day+'/'+year+' '+time;

console.log(str)

0
以下是从0开始的数组 getDay() 获取星期几的数字表示(0-6) getDate() 获取日期的数字表示(1-31) getMonth() 获取月份的数字表示(0-11)

var dt = new Date("2018-12-04T13:53:42.6785734+07:00"); 

var day = returnDay(),
month = returnMonth(),
year = dt.getFullYear(),
hours = dt.getHours(),
minutes = dt.getMinutes(),
seconds = dt.getSeconds(),


function returnDay(){
  var d = (dt.getDate() < 10) ? "0" + (dt.getDate()): dt.getDate();
  return d;
}

function returnMonth(){
  var m = (dt.getMonth() + 1 < 10) ? "0" + (dt.getMonth()+ 1):dt.getMonth()+ 1;
  return m;
}

//04/12/2018 8:53:42
console.log(day + '/' + month + '/' + year + ' ' + hours + ':' + minutes + ':' + seconds);

更多信息请查阅: https://www.w3schools.com/js/js_date_methods.asp


0

切片,我在示例中使用了jQuery,因为我在另一个项目中使用了它,而这段代码只是组件的一部分,但这并不重要。

var getTimeOnly = new Date().getTime();
var fullDate = new Date($.now()).toString();
var datePartialTime = fullDate.slice(16, 25);
var datePartialDate = fullDate.slice(0, 16);



$('a').html( "on " + datePartialDate + 'at ' + datePartialTime);

链接到笔

https://codepen.io/damPop/pen/zMzBGN


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接