Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改span内的日期以匹配用户';s时区_Javascript_Jquery - Fatal编程技术网

Javascript 更改span内的日期以匹配用户';s时区

Javascript 更改span内的日期以匹配用户';s时区,javascript,jquery,Javascript,Jquery,我有这个功能: function get_time_zone_offset() { var current_date = new Date(); return -current_date.getTimezoneOffset() / 60; } 我想要一个jQuery代码将每个span(类是'timeago'标题值)更改为它的值加上上面的函数返回的数字。例如: 之前: <span class="timeago" title="7/4/2012 9:28:30

我有这个功能:

function get_time_zone_offset() {   
    var current_date = new Date();   
    return -current_date.getTimezoneOffset() / 60; 
}
我想要一个jQuery代码将每个span(类是'timeago'标题值)更改为它的值加上上面的函数返回的数字。例如:

之前:

<span class="timeago" title="7/4/2012 9:28:30 AM">7/4/2012 9:28:30 AM</span>
2012年7月4日上午9:28:30
之后:

<span class="timeago" title="7/4/2012 12:28:30 PM">7/4/2012 12:28:30 PM</span>
2012年7月4日下午12:28:30

将函数传递给以下对象非常简单:

如果必须首先将值转换为正确的时间戳,请查看

如果您正在使用,请注意以下备注:

您是否关心时区支持?别担心。很久以前也处理这个问题了。只要您的时间戳符合格式并包含(±hhmm),无论您的访客居住在哪个时区,所有内容都应该开箱即用


因此,您甚至不必手动执行此转换。只需将适当的时区信息添加到值中。

像这样的简单循环应该可以工作:

$('span.timeago').each(function(index, elm) {
    var newVal = $(elm).attr('title') * 1 + get_time_zone_offset(); // multiply by 1 to suppress string concatenation
    $(elm).attr('title', newVal);
});

假设
7/4/2012 9:28:30 AM
代表UTC,您可以让
Date
对象进行所有计算:

function formatDate(d) {
    var yy = d.getFullYear();
    var mm = d.getMonth() + 1;
    var dd = d.getDate();
    var hh = d.getHours();
    var ii = d.getMinutes();
    var ss = d.getSeconds();
    var ap;
    if (hh < 12) {
        if (hh === 0) {
            hh = 12;
        }
        ap = "AM";
    }
    else {
        if (hh > 12) {
            hh -= 12;
        }
        ap = "PM";
    }
    return mm + "/" + dd + "/" + yy + " " + hh + ":" + ii + ":" + ss + " " + ap;
}
$("span.timeago").each(function() {
    var dateInput = $(this).text();
    var dateInUTC = new Date(dateInput + " +0000"); // note: +0000 is the key
    var dateOutput = formatDate(dateInUTC);
    $(this).attr("title", dateOutput).text(dateOutput);
});
函数格式日期(d){
var yy=d.getFullYear();
变量mm=d.getMonth()+1;
var dd=d.getDate();
var hh=d.getHours();
var ii=d.getMinutes();
var ss=d.getSeconds();
var-ap;
如果(hh<12){
如果(hh==0){
hh=12;
}
ap=“AM”;
}
否则{
如果(hh>12){
hh-=12;
}
ap=“PM”;
}
返回mm+“/”+dd+“/”+yy+“+hh+”:“+ii+”:“+ss+”+ap;
}
$(.span.timeago”).each(函数(){
var dateInput=$(this.text();
var dateInUTC=new Date(dateInput+“+0000”);//注意:+0000是键
var dateOutput=formatDate(dateInUTC);
$(this.attr(“title”,dateOutput).text(dateOutput);
});

这假设日期是可解析的。下面是。

这样一个
span
元素及其
title
值的示例将有所帮助。嗯,它不起作用!!DateTime格式如下:7/4/2012 9:28:30 AM,如果你还可以帮忙的话!
function formatDate(d) {
    var yy = d.getFullYear();
    var mm = d.getMonth() + 1;
    var dd = d.getDate();
    var hh = d.getHours();
    var ii = d.getMinutes();
    var ss = d.getSeconds();
    var ap;
    if (hh < 12) {
        if (hh === 0) {
            hh = 12;
        }
        ap = "AM";
    }
    else {
        if (hh > 12) {
            hh -= 12;
        }
        ap = "PM";
    }
    return mm + "/" + dd + "/" + yy + " " + hh + ":" + ii + ":" + ss + " " + ap;
}
$("span.timeago").each(function() {
    var dateInput = $(this).text();
    var dateInUTC = new Date(dateInput + " +0000"); // note: +0000 is the key
    var dateOutput = formatDate(dateInUTC);
    $(this).attr("title", dateOutput).text(dateOutput);
});