Javascript 将给定的unix时间字符串(EST)转换为本地服务器时间(CST),并计算unix时间和当前时间之间的差异
我一直在努力使用javascript比较两个日期/时间。我试图评估所提供的unix时间字符串(可能是EST)与javascript格式的当前时间(服务器运行的任何时区)之间的差异,并以小时/分钟/毫秒为单位获取差异 我相信我可以尝试/已经尝试过三种方法:Javascript 将给定的unix时间字符串(EST)转换为本地服务器时间(CST),并计算unix时间和当前时间之间的差异,javascript,epoch,Javascript,Epoch,我一直在努力使用javascript比较两个日期/时间。我试图评估所提供的unix时间字符串(可能是EST)与javascript格式的当前时间(服务器运行的任何时区)之间的差异,并以小时/分钟/毫秒为单位获取差异 我相信我可以尝试/已经尝试过三种方法: 将给定时区中当前服务器的javascript时间转换为unix时间,然后从中减去提供的unix时间 根据服务器的时区将提供的unix时间转换为javascript格式,然后从服务器的当前时间中减去它 将这两次转换为UTC或GMT,并对其进行计算
159920640000
,而当前服务器的javascript时间是Fri Sep 04 2020 16:47:26 GMT-0500(中央夏令时)
,如何获得两者之间的毫秒差
很抱歉,没有代码示例。原因是我尝试了很多不同的代码修订,但都没有成功,我面前的东西不再反映所有这些努力
如果可以,请帮助,并提前感谢您!我已经连续两天与这个问题作斗争了 I.您可以使用解决此问题:
1599206400000 1599218246531 {hour: 3, min: 17, seconds: 26, milliseconds: 531}
timestaminmicrosides=159920640000;
currentTimeStampinMillions=parseInt(矩.utc()格式('x');
CurrentTimeStampInMillics-TimeStampInMillics;
//示例返回值94092301
UTC
格式获取当前时间,请使用:moment.UTC()
format('x')
int
(借助parseInt
函数)直接导致format
函数的输出类型为string
1599206400000 1599218246531 {hour: 3, min: 17, seconds: 26, milliseconds: 531}
timestaminmicrosides=159920640000;
CurrentTimeStampInMillicles=(新日期).getTime();
CurrentTimeStampInMillics-TimeStampInMillics;
//示例返回值94092301
在这种情况下,您可以自由使用
getTime()
,因为官方文档会说:I。您可以使用来解决此问题:
1599206400000 1599218246531 {hour: 3, min: 17, seconds: 26, milliseconds: 531}
timestaminmicrosides=159920640000;
currentTimeStampinMillions=parseInt(矩.utc()格式('x');
CurrentTimeStampInMillics-TimeStampInMillics;
//示例返回值94092301
UTC
格式获取当前时间,请使用:moment.UTC()
format('x')
int
(借助parseInt
函数)直接导致format
函数的输出类型为string
1599206400000 1599218246531 {hour: 3, min: 17, seconds: 26, milliseconds: 531}
timestaminmicrosides=159920640000;
CurrentTimeStampInMillicles=(新日期).getTime();
CurrentTimeStampInMillics-TimeStampInMillics;
//示例返回值94092301
在这种情况下,您可以自由使用getTime()
,因为官方文档会说:
//时间戳
var d=新日期()
d、 设定时间(4)//凌晨4点
d、 setMinutes(00)//00分钟
var unixTimeStamp=Math.floor(d.getTime()/1000);//转换为unix时间
console.log(unixTimeStamp)
当前时间
var时间戳
var differenceintime=ApicCurrentTime-时间戳
//时间戳
var d=新日期()
d、 设定时间(4)//凌晨4点
d、 setMinutes(00)//00分钟
var unixTimeStamp=Math.floor(d.getTime()/1000);//转换为unix时间
console.log(unixTimeStamp)
当前时间
var时间戳
var differenceintime=ApicCurrentTime-时间戳
服务器:建议使用UTC(ISO-8601格式)。它是标准的序列化格式
客户端:客户端可以在本地处理时间,并使用toISOString
将UTC等效值发送到服务器
如果您正在寻找普通的JS代码,getTime()
——它返回Unix时间,并且没有时区
让我们举个例子:
const timeA=159920640000;//已经是Unix时间了
const timeB=新日期(2020、08、04、16、47、26、531)getTime()
log(timeA,timeB,difference(timeB-timeA));
输出:
1599206400000 1599218246531 {hour: 3, min: 17, seconds: 26, milliseconds: 531}
差异的定义
功能:
const difference = (millis) => {
const parts = [(millis / 3600000) % 60, (millis / 60000) % 60, (millis / 1000) % 60, millis % 1000];
const [hour, min, seconds, milliseconds] = parts.map((v) => parseInt(v));
return { hour, min, seconds, milliseconds };
};
- 服务器:建议使用UTC(ISO-8601格式)。它是标准的序列化格式
- 客户端:客户端可以在本地处理时间,并使用
toISOString
将UTC等效值发送到服务器
如果您正在寻找普通的JS代码,getTime()
——它返回Unix时间,并且没有时区
让我们举个例子:
const timeA=159920640000;//已经是Unix时间了
const timeB=新日期(2020、08、04、16、47、26、531)getTime()
log(timeA,timeB,difference(timeB-timeA));
输出:
1599206400000 1599218246531 {hour: 3, min: 17, seconds: 26, milliseconds: 531}
差异的定义
功能:
const difference = (millis) => {
const parts = [(millis / 3600000) % 60, (millis / 60000) % 60, (millis / 1000) % 60, millis % 1000];
const [hour, min, seconds, milliseconds] = parts.map((v) => parseInt(v));
return { hour, min, seconds, milliseconds };
};
理想情况下,在进行任何计算之前,您应该能够获得用户和服务器的GMT时间。@Taplar我用setUTCDate()
方法尝试了几种不同的排列方式(UTC除外),但没有成功。。。注意,这只是服务器端。Unix Epoch字符串来自API