【问题标题】:javascript date issue with Android emulatorAndroid模拟器的javascript日期问题
【发布时间】:2012-01-09 05:01:48
【问题描述】:

我正在尝试在 android 模拟器浏览器上显示日期。当前代码在我的 PC 网络浏览器上运行良好,但在 Android 模拟器网络浏览器上无法正常运行。这是我为此目的使用的两个函数。

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 应该出现日期名称,例如“MON、TUE、WED”等。

我该如何解决这个问题?

过去我遇到过同样的问题,然后通过以下功能解决了。我从互联网上的某个地方得到了这个功能。但是现在它在这里不起作用我不知道为什么。

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

【问题讨论】:

  • 你在设备上试过了吗?
  • 不,我没有设备。此代码应该在设备上运行吗?如果是,那么它也应该在模拟器上工作。

标签: javascript jquery android date android-emulator


【解决方案1】:

问题似乎是您在定义之前使用了该函数。这就是您收到未定义错误的原因。尝试更改顺序,以便最后评估函数。

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

【讨论】:

  • 我不知道哪一行有错误。我想这是造成问题的时间格式。
  • @al0neevenings Date.parse 应该没问题。我在 Chrome 中运行了整个代码示例,它是正确的。这可能是模拟器中的问题。您是否尝试过附加调试器并查看错误在哪里?
  • 我应该在模拟器中附加调试器吗?我的 Firefox 和 chrome 中有调试器。那里没有显示任何错误。
  • @al0neevenings 是的模拟器。我验证它在 Chrome 上运行良好
  • 我正在尝试使用 ddms,但是当我运行时显示“无法解析 adb 版本的输出”。
猜你喜欢
  • 2010-12-16
  • 2018-06-28
  • 2011-01-23
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 2011-08-15
  • 2011-12-15
  • 1970-01-01
相关资源
最近更新 更多