title: Implements time ago like youtube
body: <p>How to distinguish 4weeks ago and 1month ago? I have the problem with it when I wrote testing code for it on android. </p>
  
  <p>I think it depends on date when I tested. Do I think right? If my opinion is right then how can I make it well or passing the test codes? </p>
  
  <p>One of my idea for passing test codes is holding now date for testing. Is there any ideas for me?</p>
  
  <hr>
  
  <p>Sorry, I think my question is not clear. A part of my code is here.</p>
  
  <pre><code>assertEquals("a month ago", timeAgoWithAddedValue(Calendar.MONTH, -1));
  
  private String timeAgoWithAddedValue(int field, int value) {
      Calendar cal = Calendar.getInstance();
      cal.add(field, value);
      return timeAgo(cal.getTime());
  }
  
  public static final long WEEK_UNIT = DAY_UNIT * 7;
  public static final long MONTH_UNIT = 2629746000L; // I found this value online, 1 Gregorian month -&gt; ms
  public static final long YEAR_UNIT = 31556952000L; // I found this value online, 1 Gregorian year -&gt; ms
  
  public String timeAgo(Date date) {
          long now = Calendar.getInstance().getTimeInMillis();
          long sinceNowInMillis = now - date.getTime();
  
          ...
          if (sinceNowInMillis &lt; MONTH_UNIT) {
              long weeks = sinceNowInMillis / WEEK_UNIT;
              // return proper ago string with weeks
          }
  
          if (sinceNowInMillis &lt; YEAR_UNIT) {
              long months = sinceNowInMillis / MONTH_UNIT;
              // return proper ago string with months
          }
          ...
  }
  </code></pre>
  
  <p>I wrote the code few month ago and it succeed at that time. But today the testing code failed. Because the code expected <code>4 weeks ago</code> instead. I wonder my code is wrong or the problem is depends on length of week so it's natural problems?</p>