Javascript 将给定的unix时间字符串(EST)转换为本地服务器时间(CST),并计算unix时间和当前时间之间的差异

Javascript 将给定的unix时间字符串(EST)转换为本地服务器时间(CST),并计算unix时间和当前时间之间的差异,javascript,epoch,Javascript,Epoch,我一直在努力使用javascript比较两个日期/时间。我试图评估所提供的unix时间字符串(可能是EST)与javascript格式的当前时间(服务器运行的任何时区)之间的差异,并以小时/分钟/毫秒为单位获取差异 我相信我可以尝试/已经尝试过三种方法: 将给定时区中当前服务器的javascript时间转换为unix时间,然后从中减去提供的unix时间 根据服务器的时区将提供的unix时间转换为javascript格式,然后从服务器的当前时间中减去它 将这两次转换为UTC或GMT,并对其进行计算

我一直在努力使用javascript比较两个日期/时间。我试图评估所提供的unix时间字符串(可能是EST)与javascript格式的当前时间(服务器运行的任何时区)之间的差异,并以小时/分钟/毫秒为单位获取差异

我相信我可以尝试/已经尝试过三种方法:

  • 将给定时区中当前服务器的javascript时间转换为unix时间,然后从中减去提供的unix时间
  • 根据服务器的时区将提供的unix时间转换为javascript格式,然后从服务器的当前时间中减去它
  • 将这两次转换为UTC或GMT,并对其进行计算
  • 我已经搜索了StackOverflow,并尝试了许多不同的方法来寻找这些方法,但没有能够得到准确的值

    例如,如果提供的unix时间是
    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()

  • 要从以毫秒为单位格式化的momentJS日期获取时间戳,请使用:
    format('x')

  • 您还需要将其强制转换为
    int
    (借助
    parseInt
    函数)直接导致
    format
    函数的输出类型为
    string

  • II。简单的JS解决方案更简单:

    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()

  • 要从以毫秒为单位格式化的momentJS日期获取时间戳,请使用:
    format('x')

  • 您还需要将其强制转换为
    int
    (借助
    parseInt
    函数)直接导致
    format
    函数的输出类型为
    string

  • II。简单的JS解决方案更简单:

    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