我正在尝试在 Android 模拟器浏览器上显示日期。当前代码在我的 PC Web 浏览器上运行良好,但在 Android 模拟器 Web 浏览器上无法正常运行。这是我为此目的使用的两个函数。
dayOfWeek('Sun Jan 08 2012 02:00:00 GMT+0200 (FLE Standard Time)');
dayOfWeek = function (d) {
var dayNames = new Array('SUN','MON','TUE','WED','THU','FRI','SAT');
var day = toTimestamp(d);
//alert(day);
return dayNames[day.getDay()];
}
toTimestamp = function (strDate){
return new Date(Date.parse(strDate));
}
我以“Sun Jan 08 2012 02:00:00 GMT+0200 (FLE Standard Time)”格式传递日期,您也可以在上面的代码中看到。
问题: 问题出在 Android 模拟器浏览器上,它显示“未定义”,其中 ti 应该出现当天的名称,例如“周一、周二、周三”等。
如何解决这个问题?
过去我也遇到过同样的问题,然后通过以下功能解决了。我从互联网上的某个地方得到了这个功能。但现在它在这里不起作用我不知道为什么。
function relative_time(date_str) {
if (!date_str) {return;}
date_str = $.trim(date_str);
date_str = date_str.replace(/\.\d\d\d+/,""); // remove the milliseconds
date_str = date_str.replace(/-/,"/").replace(/-/,"/"); //substitute - with /
date_str = date_str.replace(/T/," ").replace(/Z/," UTC"); //remove T and substitute Z with UTC
date_str = date_str.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // +08:00 -> +0800
var parsed_date = new Date(date_str);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); //defines relative to what ..default is now
var delta = parseInt((relative_to.getTime()-parsed_date)/1000);
delta=(delta<2)?2:delta;
var r = '';
if (delta < 60) {
r = delta + ' seconds ago';
} else if(delta < 120) {
r = 'a minute ago';
} else if(delta < (45*60)) {
r = (parseInt(delta / 60, 10)).toString() + ' minutes ago';
} else if(delta < (2*60*60)) {
r = 'an hour ago';
} else if(delta < (24*60*60)) {
r = '' + (parseInt(delta / 3600, 10)).toString() + ' hours ago';
} else if(delta < (48*60*60)) {
r = 'a day ago';
} else {
r = (parseInt(delta / 86400, 10)).toString() + ' days ago';
}
return 'about ' + r;
};
最佳答案
问题似乎是您在定义函数之前就使用了该函数。这就是您收到未定义错误的原因。尝试更改顺序,以便最后计算该函数。
dayOfWeek = function (d) {
var dayNames = new Array('SUN','MON','TUE','WED','THU','FRI','SAT');
var day = toTimestamp(d);
//alert(day);
return dayNames[day.getDay()];
}
toTimestamp = function (strDate){
return new Date(Date.parse(strDate));
}
dayOfWeek('Sun Jan 08 2012 02:00:00 GMT+0200 (FLE Standard Time)');
关于Android模拟器的javascript日期问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8781136/