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);
});