Javascript-如何通过UTC时间设置动态时间间隔并显示内容

时间:2019-05-20 11:34:40

标签: javascript jquery

目标是让div通知用户会话过期,并提供在过期之前对其进行扩展。通过每个页面加载事件的后端代码设置会话,并将Cookie值和下一个到期时间保存在UTC中。

UTC时间格式的样本格式:MM / dd / yyyy-HH:mm:ss

<div class="session-alert">
  <p>Your session is going to expire in a while. To keep the current session click "OK"</p>
  <button class="button button-session-ok">OK</button>
  <button class="button button-session-cancel">OK</button>
</div>

现在,我想在下一个使用JavaScript到期的时间之前20秒显示session-alert div。如何将下一个到期时间(UTC)转换为本地时间并从中减去20秒,然后将时间间隔传递到一个间隔中以显示会话警报div?我只想使用核心javascript或jquery,而不使用任何第三方JS或插件。

var EXPIRE_COUNTDOWN_TIMER;

var nextExprireTime = new Date('05/20/2019-15:23:44');
var nextExprireTimeISO = nextExprireTime.toISOString();
var currLocalTime = new Date().toISOString();

var diff = (nextExprireTimeISO - currLocalTime) - 20 seconds;


EXPIRE_COUNTDOWN_TIMER = setInterval(function(){
  $('.session-alert').show();
}, diff);

2 个答案:

答案 0 :(得分:0)

使用:toLocaleDateString

  

toLocaleDateString()方法返回具有以下语言的字符串:   此日期的日期部分的敏感表示。新的   语言环境和选项参数使应用程序可以指定语言   应该使用其格式约定并允许自定义   该功能的行为。在较旧的实现中,它们忽略了   语言环境和选项参数,使用的语言环境以及形式   返回的字符串完全取决于实现。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today = new Date().toLocaleDateString('es-ES', options)
console.log(today)

答案 1 :(得分:0)

您可以获取UTC字符串的当前eppocTime和epocTime, 然后从futureEpoch时间中减去currentEppocTime(如果其20秒显示此消息)

var currentEppocTime = new Date().getTime();
// your UTC string should be split into year,mon,day,hours,min,sec,milisec
var futureEppocTime = new Date(year,mon,day,hours,min,sec,milisec).getTime();

if (futureEppocTime - currentEppocTime <= 20) {
  // logic to show the message
}