我从服务器获取的日期时间变量格式为:6/29/2011 4:52:48 PM
,并且它是以UTC时间表示的。 我希望使用JavaScript将其转换为当前用户的浏览器时区。
请问如何使用JavaScript或jQuery实现?
我从服务器获取的日期时间变量格式为:6/29/2011 4:52:48 PM
,并且它是以UTC时间表示的。 我希望使用JavaScript将其转换为当前用户的浏览器时区。
请问如何使用JavaScript或jQuery实现?
如果有人需要一个函数,将转换后的时间显示到特定的id元素中,并应用日期格式字符串yyyy-mm-dd。其中date1是字符串,ids是要显示时间的元素的id。
function convertUTCDateToLocalDate(date1, ids)
{
var newDate = new Date();
var ary = date1.split(" ");
var ary2 = ary[0].split("-");
var ary1 = ary[1].split(":");
var month_short = Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
newDate.setUTCHours(parseInt(ary1[0]));
newDate.setUTCMinutes(ary1[1]);
newDate.setUTCSeconds(ary1[2]);
newDate.setUTCFullYear(ary2[0]);
newDate.setUTCMonth(ary2[1]);
newDate.setUTCDate(ary2[2]);
ids = document.getElementById(ids);
ids.innerHTML = " " + newDate.getDate() + "-" + month_short[newDate.getMonth() - 1] + "-" + newDate.getFullYear() + " " + newDate.getHours() + ":" + newDate.getMinutes() + ":" + newDate.getSeconds();
}
我知道这个答案已经被接受了,但是我是通过谷歌搜索到这里的,我从已接受的答案中获得灵感并解决了问题,所以我想分享一下,如果有人需要的话。
(new Date()).toISOString(); // returns 2021-03-26T09:58:57.156Z (GMT time)
dayjs().format('YYYY-MM-DD HH:mm:ss,SSS'); // returns 2021-03-26 10:58:57,156 (local time)
const dayjs = require('dayjs');
在其他环境中,请参阅dayjs文档。)由于这种格式无法确定是本地格式还是UTC时间,因此我们需要确保JS知道它是一个UTC时间。因此,我们需要将日期设置为UTC。
function setDateAsUTC(d) {
let date = new Date(d);
return new Date(
Date.UTC(
date.getFullYear(),
date.getMonth(),
date.getDate(),
date.getHours(),
date.getMinutes(),
date.getSeconds()
)
);
}
然后使用它
let d = "2021-12-16 06:07:40";
setDateAsUTC(d).toLocaleString();
// output: 12/16/2021, 6:07:40 AM
let newDate = "2011-06-29T16:52:48.000Z"
new Date(newDate).toLocaleString();
//output: 6/29/2011, 4:52:48 PM
https://jsfiddle.net/moriz/6ktb4sv8/1/
<div id="eventTimestamp" class="timeStamp">
</div>
<script type="text/javascript">
// Convert UTC timestamp to local time and display in specified DOM element
function convertAndDisplayUTCtime(date,hour,minutes,elementID) {
var eventDate = new Date(''+date+' '+hour+':'+minutes+':00 UTC');
eventDate.toString();
$('#'+elementID).html(eventDate);
}
convertAndDisplayUTCtime('06/03/2015',16,32,'eventTimestamp');
</script>
moment(date).format()
总是以本地日期的形式呈现结果。
额外奖励,你可以按照任何方式格式化。例如:moment().format('MMMM Do YYYY, h:mm:ss a'); // September 14th 2018, 12:51:03 pm
moment().format('dddd'); // Friday
moment().format("MMM Do YY");
如需更多详细信息,请参考Moment js网站
tl;dr (new Date('6/29/2011 4:52:48 PM UTC')).toString()
源字符串必须指定时区或UTC。
一行代码:
(new Date('6/29/2011 4:52:48 PM UTC')).toString()
"Wed Jun 29 2011 09:52:48 GMT-0700 (Pacific Daylight Time)"
(new Date('1/29/2011 4:52:48 PM UTC')).toString()
在我的浏览器中的结果:
"Sat Jan 29 2011 08:52:48 GMT-0800 (Pacific Standard Time)"
let utc1 = new Date();
let utc2 = null;
const dateForCompare = new Date(valueFromServer);
dateForCompare.setTime(dateForCompare.getTime() - dateForCompare.getTimezoneOffset() *
60000);
utc2 = dateForCompare;
const seconds = Math.floor(utc1 - utc2) / 1000;
const localDate = new Date(`${utcDate.replace(/-/g, '/')} UTC`);
我相信这是最好的解决方案:
let date = new Date(objDate);
date.setMinutes(date.getTimezoneOffset());
$scope.convert = function (thedate) {
var tempstr = thedate.toString();
var newstr = tempstr.toString().replace(/GMT.*/g, "");
newstr = newstr + " UTC";
return new Date(newstr);
};
更新:Angular 1.3.0 版本已经为日期过滤器添加了 UTC 支持,虽然我还没有使用过,但应该更加容易,以下是格式:
{{ date_expression | date : format : timezone}}
var date = new Date('2020-11-06T01:30:00.000Z'); console.log(date.toLocaleDateString()); console.log(date.toLocaleString()); console.log(date.toLocaleTimeString());
- FXLima