javascript - YYYY-MM-DDTHH格式的js中的相对时间函数:MM:SS+0000

标签 javascript function date time relative-date

我想知道是否有人知道如何解析这种类型的日期格式:2010-07-26T18:02:46+0000

进入相对时间,比如“30秒前”

我已经有一个函数可以为类似但不同的时间格式执行此操作:

    function relative_time(time_value, is_relative) {
        var values = time_value.split(" "),
            parsed_date = Date.parse(values[1] + " " + values[2] + ", " + values[5] + " " + values[3] + " UTC"),
            date = new Date(parsed_date),
            relative_to = new Date(),
            r = '',
            delta = parseInt((relative_to.getTime() - date.getTime()) / 1000);

        var seconds = {
          'from' : {
            'minutes' : function(v) { return v * 60; },
            'hours'   : function(v) { return this.minutes(v) * 60; },
            'days'    : function(v) { return this.hours(v) * 24; },
            'weeks'   : function(v) { return this.days(v) * 7; },
            'months'  : function(v) { return this.weeks(v) * 4.34812141; },
            'years'   : function(v) { return this.months(v) * 12; }
          },
          'to' : {
            'minutes' : function(v) { return v / 60; },
            'hours'   : function(v) { return this.minutes(v) / 60; },
            'days'    : function(v) { return this.hours(v) / 24; },
            'weeks'   : function(v) { return this.days(v) / 7; },
            'months'  : function(v) { return this.weeks(v) / 4.34812141; },
            'years'   : function(v) { return this.months(v) / 12; }
          }
        };

        if (!is_relative)
          return formatTime(date) + ' ' + formatDate(date);

        if (delta < 30) 
          return 'less than a minute ago';
        var minutes = parseInt(seconds.to.minutes(delta)+0.5);
        if (minutes <= 1) 
          return 'about a minute ago';
        var hours = parseInt(seconds.to.hours(delta)+0.5);
        if (hours < 1) 
          return minutes + ' minutes ago';
        if (hours == 1) 
          return 'about an hour ago';
        var days = parseInt(seconds.to.days(delta)+0.5);
        if (days < 1) 
          return hours + ' hours ago';
        if (days==1) 
          return formatTime(date) + ' yesterday';
        var weeks = parseInt(seconds.to.weeks(delta)+0.5);
        if (weeks < 2) 
          return formatTime(date) + ' ' + days + ' days ago';
        var months = parseInt(seconds.to.months(delta)+0.5);
        if (months < 2) 
          return weeks + ' weeks ago';
        var years = parseInt(seconds.to.years(delta)+0.5);
        if (years < 2) 
          return months + ' months ago';
        return years + ' years ago';

        function formatTime(date) {
            var hour = date.getHours(),
                min = date.getMinutes() + "",
                ampm = 'AM';

            if (hour >= 12) ampm = 'PM';
            if (hour > 12) hour -= 12;

            if (min.length == 1) {
                min = '0' + min;
            }

            return hour + ':' + min + ' ' + ampm;
        }
};

此函数的格式为:Fri Nov 06 02:53:43 +0000

如何更改此脚本以使用新的时间格式?在这个阶段这有点超出我的能力范围,我很想学习。

谢谢

最佳答案

我不知道你是否想使用 jQuery 但是:

There is a jQuery plugin for it.

关于javascript - YYYY-MM-DDTHH格式的js中的相对时间函数:MM:SS+0000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3349293/

相关文章:

c - 如何通过将小时数归零 ex : 00:00 将 struct tm 转换为 time_t

java - 如何获取过去一周所有天的日期?

javascript - AngularJS 中的 View 未更新

javascript - Lodash 从字符串数组中删除

javascript - 如何调用定义为字符串的函数?

python - 同时使用类函数和静态方法? (Python)

javascript - 在构造函数中访问 Angular 2 输入(属性)

javascript - 如何访问数组属性的值?

php - 如何获取 PHP 核心函数列表以便编写函数包装器

php - 如何从 jquery datepicker 列出一个月中的所有日期?