目标是让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);
答案 0 :(得分:0)
使用:toLocaleDateString
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
}