Javascript 运行日期时间返回值在 Chrome 中有效,但在 Internet Explorer 中无效

标签 javascript html

我有一个 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/

相关文章:

html - Blazor 中的 “The attribute names could not be inferred from bind attribute ' 绑定(bind)值 '” 异常

html - 如何在 html 中划分 3 个相等的部分 li

javascript - 具有不同结果的多个 div 的 CSS 控制

javascript - react 调用子方法的不同方式

javascript - JQuery 添加分页符(如 Google Docs 或 MS Word)并转到下一页

javascript - 如何使用 Greasemonkey 更改 CSS 样式?

javascript - 为什么我的 JavaScript 不被认为是安全的?

javascript - 我如何知道哪个 javascript 脚本将特定类添加到我的源代码中

javascript - 在嵌入我网站的 YouTube 视频之前添加自定义视频广告

javascript - Bootstrap 3 - 文本输入下的下拉搜索结果