我有一个 JavaScript 函数可以以不同的方式运行。 它在 Chrome 浏览器中运行良好,但在 Internet Explorer 中没有显示出适当的值。
在 Chrome 中:
13-Dec-2011 13:14:19
在 IE8 中:
0NaN-undefined-NaN 0NaN:0NaN:0NaN
你可以从这个page link查看这个来自两个浏览器。另外查看一下页面的源代码 http://chemfluence.org.in/monetarist/sample.php
我的代码:
<div id="txt" title="Industries will generate products on every 3 Virtual days.
12 Virtual Days = 1 Real day. dd-Mon-yyyy HH:MM:SS ."></div>
Javascript
<script type='text/javascript'>//<![CDATA[
var virtualOrigin = Date.parse("2012-02-27T00:00:00"),
game_start_realdate=Date.parse("2013-01-27T12:00:00"),
realOrigin = Date.now(),
factor = 12;
function getVirtual(time) {
return new Date( virtualOrigin + ((time - realOrigin) * factor) +(realOrigin-game_start_realdate)*factor);
}
function pad2(num) {
return ("0"+num).substr(-2);
}
function format(time) {
var month=new Array();
month[0]="Jan";
month[1]="Feb";
month[2]="Mar";
month[3]="Apr";
month[4]="May";
month[5]="Jun";
month[6]="Jul";
month[7]="Aug";
month[8]="Sep";
month[9]="Oct";
month[10]="Nov";
month[11]="Dec";
return pad2(time.getDate())
+ "-" + month[time.getMonth()]
+ "-" + time.getFullYear()
+ " " + pad2(time.getHours())
+ ":" + pad2(time.getMinutes())
+ ":" + pad2(time.getSeconds());
}
function startTime() {
var now = new Date();
var display = getVirtual(now);
output.innerText = format(display);
setTimeout(startTime, 1000/factor - (now.getMilliseconds() % (1000/factor)));
}
var output = document.getElementById("txt");
startTime();
</script>
我需要修改上述 Javascript 才能在 Internet Explore 和 Chrome/Firefox 中工作; 请给我修改后的代码;
最佳答案
尝试使用 moment.js。它是跨浏览器的,可以让在 javascript 中处理日期变得不再那么痛苦。该文档非常详尽。 http://momentjs.com/docs/
您可以使用以下内容格式化日期:
var day = moment("1995-12-25", "MM-DD-YYYY");
http://momentjs.com/docs/#/parsing/string-format/
更新
这是一个完整使用的示例。
var mysql_date = '2013-01-25 10:00:00'; // Date from MySQL database
/**
* @param string mysql_data Date string
* @param string format Format in which mysql_data is set
*/
var date = moment(mysql_date , 'YYYY-MM-DD HH:mm:ss'); // new moment.js object.
// To display the date in a different format use:
var date_format1 = date.format('MMM, Do'); // Format here would be Jan, 25th
var date_format2 = date.format('MMMM, Do, YYYY'); // January, 25th, 2013
console.log(date_format1, date_format2);
您可以随时更改格式。您无需再次重新创建它。
关于Javascript 运行日期时间返回值在 Chrome 中有效,但在 Internet Explorer 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432686/