日期格式化AngularJS仅显示日期和月份

时间:2014-09-15 09:49:41

标签: javascript angularjs

我为Angular完成了新手。所以我有created_at的日期值。

2008-04-25 00:00:00

我希望每个月只用英语获得这一天。我已经尝试了以下方法来制作样本以获得单独的年份。但过滤器似乎不起作用。我做错了什么?

<h2>Recent Study</h2>
    <ul ng-repeat="x in names">
         <li>
            <div class="date">
            <span class="day">{{ x.created_at |  date : 'yyyy' }}</span>
            <span class="month">Jul</span>
            </div>
            <p><a href="#">{{ x.study_description }}</a></p>
        </li>

    </ul>

4 个答案:

答案 0 :(得分:8)

您需要将日期转换为秒,并使用过滤器:

app.filter('toSec', function($filter) {
  return function(input) {
      var result = new Date(input).getTime();
      return result || '';
  };
});

并在您的HTML中使用它:

{{ '2008-04-25 00:00:00' |  toSec | date:'EEEE'}}

结果:

Friday

Angular为您提供了创建Custome Filter

的选项

这是一个有效的example,可以使用客户过滤器实现您的需求。

答案 1 :(得分:1)

created_at的格式不兼容。

  

格式化为Date对象,毫秒(字符串或数字)或各种ISO 8601日期时间字符串格式的日期(例如yyyy-MM-ddTHH:mm:ss.sssZ及其较短版本,如yyyy-MM-ddTHH:mmZ, yyyy-MM-dd或yyyyMMddTHHmmssZ)。如果字符串输入中未指定时区,则认为时间在本地时区。

引自https://docs.angularjs.org/api/ng/filter/date

例如&#34; 2008-04-25T00:00:00&#34;会工作的。

答案 2 :(得分:1)

我希望您的输入作为时间戳,在您的代码中只需更改过滤器即可获得唯一的一天

<h2>Recent Study</h2>
    <ul ng-repeat="x in names">
         <li>
            <div class="date">
              <!-- getting only day  -->
            <span class="day">{{ x.created_at | date:'dd '}}</span>
                <!-- getting month name and  day only -->
            <span class="month">{{ x.created_at |  date:'MMM-dd '}}</span>
            </div>
            <p><a href="#">{{ x.study_description }}</a></p>
        </li>

    </ul>

此处date:'dd '给出了每月的日期,填充(01-31)和

date:'MMM-dd ' gives Month in year (Jan-Dec) and above day in month.

答案 3 :(得分:0)

我找到了答案。问题很简单。我们应该将mysql日期时间转换为javascript日期时间,然后才能在javascript中格式化它。

所以我的格式是:2008-04-25 00:00:00

  app.filter('format', function () {
          return function (item) {
               var t = item.split(/[- :]/);
           var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
           var time=d.getTime();                 
                   return time;
          };
        });

我已经将mysql转换为javascript然后转换为毫秒,然后应用我的过滤器工作。这可能效率不高。它工作得很好。希望这有助于某人。

所以我的HTML:

 <li  ng-repeat="x in names">
                <div class="date">
                <span class="day">{{ x.created_at | format | date:'d'}}</span>
                <span class="month">{{ x.created_at | format | date:'MMM'}}</span>
                </div>
                <p><a href="#">{{ x.study_description | makeUppercase}}</a></p>
            </li>

工作正常。 @Nishanth答案给了我不确定的。我赞成它,因为它似乎对一些人来说很好。日期格式支持也因浏览器工具而异。