Javascript 有没有更好的方法来计算内容的年龄

Javascript 有没有更好的方法来计算内容的年龄,javascript,date-arithmetic,Javascript,Date Arithmetic,我已经写了一个代码来计算网站内容的年龄。这是低效的,而且计算也很离谱。我以前写过这个脚本,上一次它运行得很好,但我找不到它所在的该死的文件 我认为计算问题是由年份造成的。有人能给我建议一个解决办法吗?创建的日期格式为YYYYMMDD,输出以整周为单位(这一点很重要),即下面的示例应输出“52”周 var created='20120223'; var year=Number(created.substr(0,4)); var month=Number(created.substr(4,2))-1

我已经写了一个代码来计算网站内容的年龄。这是低效的,而且计算也很离谱。我以前写过这个脚本,上一次它运行得很好,但我找不到它所在的该死的文件

我认为计算问题是由年份造成的。有人能给我建议一个解决办法吗?创建的日期格式为YYYYMMDD,输出以整周为单位(这一点很重要),即下面的示例应输出“52”周

var created='20120223';
var year=Number(created.substr(0,4));
var month=Number(created.substr(4,2))-1;
var day=Number(created.substr(6,2));
var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth() + 1;
var curr_year = d.getFullYear();
var input_age = ((((curr_year - year)*31536000) + ((curr_month - month)*2678400) + ((curr_date - day)*86400))/604800).toFixed(0);
document.getElementById('item12345_input').value = input_age + ' weeks';

只需减去两个日期

var createdDate = new Date(
    +created.substring(0, 4),  // Four digit year
    created.substring(4, 6)-1, // Base-zero month
    +created.substring(6, 8)); // Day of month
var ageMillis = (new Date) - createdDate;
var MS_PER_WEEK = 1000/* ms /sec */
                * 60  /* sec/min */
                * 60  /* min/hr  */
                * 24  /* hr /day */
                * 7   /* day/wk  */;
var ageWeeks = ageMillis / MS_PER_WEEK;

你先减去一个月。然后你又增加了一个月。试试这个

    var created='20120223';
var year=Number(created.substr(0,4));
var month=Number(created.substr(4,2))-1;
var day=Number(created.substr(6,2));
var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var input_age = ((((curr_year - year)*31536000) + ((curr_month - month)*2678400) + ((curr_date - day)*86400))/604800).toFixed(0);
alert(input_age + ' weeks');

注:月份以0为基础

<script>
var created ="20120223";
var yyyy  = +created.substring(0, 4);
var mm    = created.substring(4, 6)-1;
var dd    = +created.substring(6, 8);
var createdDate = new Date(yyyy,mm,dd);
var ageMillis = new Date().getTime() - createdDate.getTime();
var MS_PER_WEEK = 1000/* ms /sec */
                * 60  /* sec/min */
                * 60  /* min/hr  */
                * 24  /* hr /day */
                * 7   /* day/wk  */;
var ageWeeks = parseInt(ageMillis / MS_PER_WEEK);

alert("Created on " +mm+"/"+dd+"/"+yyyy+" which is "+ageWeeks+ " week"+(ageWeeks==1?"":"s")+" ago");

</script>

var created=“20120223”;
var yyyy=+created.substring(0,4);
var mm=created.substring(4,6)-1;
var-dd=+created.substring(6,8);
var createdDate=新日期(yyyy、mm、dd);
var agmeillis=new Date().getTime()-createdDate.getTime();
var MS_/周=1000/*MS/秒*/
*60/*秒/分钟*/
*60/*分钟/小时*/
*24/*小时/天*/
*7/*天/周*/;
var ageWeeks=parseInt(AGEMILIS/MS_/周);
警报(“在“+mm+”/“+dd+”/“+yyyy+”上创建,即“+ageWeeks+“week”+(ageWeeks==1?”:“s”)+“Age之前”);
您可以尝试以下方法:

    var created='20120223';
    var year=Number(created.substr(0,4));
    var month = Number(created.substr(4,2));
    if (Number(created.substr(4,2)) < 10){
      month = '0'+ Number(created.substr(4,2));
    }
    var day=Number(created.substr(6,2));
    var dt = year+'-'+month+'-'+day;
    var dif = new Date().getTime() - Date.parse(dt);
    var divWeek = 7 * 24 * 60 * 60 * 1000;
    alert(Math.round(dif/divWeek));
var-created='20120223';
风险值年份=数量(已创建。子风险值(0,4));
var月=数量(已创建的substr(4,2));
if(数字(创建的子序列(4,2))<10){
月份='0'+数字(已创建.substr(4,2));
}
var day=数量(已创建的substr(6,2));
var dt=年+月+日;
var dif=new Date().getTime()-Date.parse(dt);
var divWeek=7*24*60*60*1000;
警报(数学轮(dif/每周);

Ahem-月份以0为基础。谢谢,迈克,这看起来既高效又精确。一个问题,您是否能够稍微修改以包含创建日期(即20130)的值?