我从服务器获取的日期时间变量格式为:6/29/2011 4:52:48 PM
,并且它是以UTC时间表示的。 我希望使用JavaScript将其转换为当前用户的浏览器时区。
请问如何使用JavaScript或jQuery实现?
我从服务器获取的日期时间变量格式为:6/29/2011 4:52:48 PM
,并且它是以UTC时间表示的。 我希望使用JavaScript将其转换为当前用户的浏览器时区。
请问如何使用JavaScript或jQuery实现?
UTC转本地时间再转ISO - 使用Molp Burnbright的答案
因为服务器只接受ISO日期时间格式,所以我将UTC转换为本地时区,并以ISO格式发送到服务器。
在某个地方声明这个变量。
function convertUTCDateToLocalDate(date) {
var newDate = new Date(date.getTime() - date.getTimezoneOffset()*60*1000);
return newDate;
}
如果你需要本地时间并以 ISO 格式显示,可以使用以下代码:convertUTCDateToLocalDate(date).toISOString()
我曾经遇到过类似的问题,我使用以下代码(JavaScript)将UTC时间转换为本地时间
let a = new Date()
a = a.getFullYear().toString() + "-" + (a.getMonth() + 1).toString().padStart(2, "0") + "-" + a.getDate().toString().padStart(2, "0")
console.log(a)
如果你想将UTC转换为任何时区,我会给出IST的例子
const istOffsetMinutes = 330 ( IST offset in minutes (5 hours and 30 minutes))
const istDate = new Date(date.getTime() + istOffsetMinutes * 60 * 1000);
我创建了一个函数,将所有时区转换为本地时间。
我没有使用getTimezoneOffset(),因为它不能返回正确的偏移值。
要求:
1. npm i moment-timezone
function utcToLocal(utcdateTime, tz) {
var zone = moment.tz(tz).format("Z") // Actual zone value e:g +5:30
var zoneValue = zone.replace(/[^0-9: ]/g, "") // Zone value without + - chars
var operator = zone && zone.split("") && zone.split("")[0] === "-" ? "-" : "+" // operator for addition subtraction
var localDateTime
var hours = zoneValue.split(":")[0]
var minutes = zoneValue.split(":")[1]
if (operator === "-") {
localDateTime = moment(utcdateTime).subtract(hours, "hours").subtract(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss")
} else if (operator) {
localDateTime = moment(utcdateTime).add(hours, "hours").add(minutes, "minutes").format("YYYY-MM-DD HH:mm:ss")
} else {
localDateTime = "Invalid Timezone Operator"
}
return localDateTime
}
utcToLocal("2019-11-14 07:15:37", "Asia/Kolkata")
//Returns "2019-11-14 12:45:37"
getTimezoneDate = function ( e ) {
function p(s) { return (s < 10) ? '0' + s : s; }
var t = new Date(0);
t.setUTCSeconds(e);
var d = p(t.getDate()),
m = p(t.getMonth()+1),
Y = p(t.getFullYear()),
H = p(t.getHours()),
i = p(t.getMinutes()),
s = p(t.getSeconds());
d = [d, m, Y].join('/') + ' ' + [H, i, s].join(':');
return d;
};
var updaated_time= "2022-10-25T06:47:42.000Z"
{{updaated_time | date: 'dd-MM-yyyy HH:mm'}} //output: 26-10-2022 12:00
对于 TypeScript 用户,这里有一个帮助函数:
// Typescript Type: Date Options
interface DateOptions {
day: 'numeric' | 'short' | 'long',
month: 'numeric',
year: 'numeric',
timeZone: 'UTC',
};
// Helper Function: Convert UTC Date To Local Date
export const convertUTCDateToLocalDate = (date: Date) => {
// Date Options
const dateOptions: DateOptions = {
day: 'numeric',
month: 'numeric',
year: 'numeric',
timeZone: 'UTC',
};
// Formatted Date (4/20/2020)
const formattedDate = new Date(date.getTime() - date.getTimezoneOffset() * 60 * 1000).toLocaleString('en-US', dateOptions);
return formattedDate;
};
function getUTC(str) {
var arr = str.split(/[- :]/);
var utc = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]);
utc.setTime(utc.getTime() - utc.getTimezoneOffset()*60*1000)
return utc;
}
对于其他访问者 - 使用此函数从UTC字符串获取本地日期对象,应该处理DST并且可在IE,iPhone等设备上使用。
我们拆分字符串(因为JS日期解析在某些浏览器上不受支持) 我们从UTC获取差异并将其从UTC时间中减去,这将给我们本地时间。由于返回的偏移量是根据DST计算的(如果我错了请纠正我),所以它将在变量“utc”中设置那个时间。最后返回日期对象。
var date = new Date('2020-11-06T01:30:00.000Z'); console.log(date.toLocaleDateString()); console.log(date.toLocaleString()); console.log(date.toLocaleTimeString());
- FXLima