title: Relative time function in js for format YYYY-MM-DDTHH:MM:SS+0000
body: <p>I was wondering if anyone knew how I could parse this type of date format: 2010-07-26T18:02:46+0000</p>
  
  <p>into the relative time such as "30 seconds ago"</p>
  
  <p>I already have a function which does it for a similar but different time format: </p>
  
  <pre><code>    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 &lt; 30) 
            return 'less than a minute ago';
          var minutes = parseInt(seconds.to.minutes(delta)+0.5);
          if (minutes &lt;= 1) 
            return 'about a minute ago';
          var hours = parseInt(seconds.to.hours(delta)+0.5);
          if (hours &lt; 1) 
            return minutes + ' minutes ago';
          if (hours == 1) 
            return 'about an hour ago';
          var days = parseInt(seconds.to.days(delta)+0.5);
          if (days &lt; 1) 
            return hours + ' hours ago';
          if (days==1) 
            return formatTime(date) + ' yesterday';
          var weeks = parseInt(seconds.to.weeks(delta)+0.5);
          if (weeks &lt; 2) 
            return formatTime(date) + ' ' + days + ' days ago';
          var months = parseInt(seconds.to.months(delta)+0.5);
          if (months &lt; 2) 
            return weeks + ' weeks ago';
          var years = parseInt(seconds.to.years(delta)+0.5);
          if (years &lt; 2) 
            return months + ' months ago';
          return years + ' years ago';
  
          function formatTime(date) {
              var hour = date.getHours(),
                  min = date.getMinutes() + "",
                  ampm = 'AM';
  
              if (hour &gt;= 12) ampm = 'PM';
              if (hour &gt; 12) hour -= 12;
  
              if (min.length == 1) {
                  min = '0' + min;
              }
  
              return hour + ':' + min + ' ' + ampm;
          }
  };
  </code></pre>
  
  <p>Format for this function would be: Fri Nov 06 02:53:43 +0000</p>
  
  <p>How could I change this script to work with the new time format? It's a bit beyond me at this stage and I am keen to learn.</p>
  
  <p>Thank You</p>