获取日期以显示AngularJS,Firebase的月份和年份

时间:2016-01-09 22:23:08

标签: angularjs html5 date datetime firebase

我很担心如何使用angularJS和Firebase来显示一个月和一年的日期。

我已将日期转换为要保存在Firebase中的字符串。

让我澄清一下,保存的日期不是当前日期,也不应该代表帖子的创建日期。这是一个使用日期选择器选择的日期(它应该代表项目的过去完成日期)。

这是在firebase中保存日期的方式: enter image description here

该字符串保存为 2016年1月25日星期一00:00:00 GMT-0500(EST)

以下是它在浏览器中的显示方式。这只是许多人的一篇“文章”: enter image description here

我试图让它显示为“ 2016年1月

我不确定如何将它恢复到日期而不是字符串,然后过滤它,这只是月份和年份。

以下是相关的HTML:

<body ng-controller="WelcomeCtrl">
        <div class="list-group" ng-repeat="article in articles">
            <a href="#" onclick="return false;" class="list-group-item active">
                <h4 class="list-group-item-heading">{{article.title}}</h4>
                <p class="list-group-item-text">Completed: {{article.date}}</p>
                <p class="list-group-item-text"><em>{{article.tech}}</em></p>
                <p class="list-group-item-text">{{article.post}}</p>

                <span class="pull-right">
                  <button class="btn btn-xs btn-info" ng-click="editPost(article.$id, article.date)" data-target="#editModal">EDIT</button>
                  <button class="btn btn-xs btn-warning" ng-click="confirmDelete(article.$id)" data-target="#deleteModal" >DELETE</button>
                </span>
            </a>
        </div>
</body>

这是我的 WelcomeCtrl 控制器:

.controller('WelcomeCtrl', ['$scope', '$firebase', 'CommonProp', function ($scope, $firebase, CommonProp) {
    $scope.username = CommonProp.getUser();
    var firebaseObj = new Firebase("https://xxxxxxxx.firebaseio.com/articles");
    var sync = $firebase(firebaseObj);
    $scope.articles = sync.$asArray();
//I AM ASSUMING SOMETHING HAS TO GO RIGHT HERE TO CONVERT THE DATE TO A DATE OBJECT, BUT I AM NOT SURE WHAT.
//article.date = new Date(article.date); does not work.
//articles.date = new Date(articles.date); does not work.

$scope.editPost = function (id, date) {
    console.log(id);
    console.log(date);

    var firebaseObj = new Firebase("https://xxxxxxx.firebaseio.com/articles/" + id);
    var syn = $firebase(firebaseObj);
    $scope.postToUpdate = syn.$asObject();
    $scope.postToUpdate.date = new Date(date);
    $('#editModal').modal();

};

$scope.update = function () {
    console.log($scope.postToUpdate.$id);
    var fb = new Firebase("https://xxxxxxxx.firebaseio.com/articles/" + $scope.postToUpdate.$id);

    var article = $firebase(fb);
    article.$update({
        title: $scope.postToUpdate.title,
        tech: $scope.postToUpdate.tech,
        date: $scope.postToUpdate.date.toString(),
        post: $scope.postToUpdate.post,
        emailId: $scope.postToUpdate.emailId
    }).then(function (ref) {
        console.log(ref.key()); // bar
        $('#editModal').modal('hide');
    }, function (error) {
        console.log("Error:", error);
    });
};


$scope.confirmDelete = function (id) {
    var fb = new Firebase("https://xxxxxxxx.firebaseio.com/articles/" + id);
    var article = $firebase(fb);
    $scope.postToDelete = article.$asObject();
    $('#deleteModal').modal();
};

$scope.deletePost = function () {
    var fb = new Firebase("https://xxxxxxxx.firebaseio.com/articles/" + $scope.postToDelete.$id);
    var article = $firebase(fb);
    article.$remove().then(function (ref) {
        $('#deleteModal').modal('hide');
    }, function (error) {
        console.log("Error:", error);
    });
};

}]);

1 个答案:

答案 0 :(得分:0)

你可以解析代表日期的字符串,以获得1970年1月1日以来的毫秒数。然后用它来创建一个日期对象,从中可以提取月份的数量(从0到11)和这一年。

jQuery(document).on( 'click', '.middle', function(e) {
  var my_id= jQuery(this).parent('.top').data("id");
  var my_name = jQuery(this).siblings().find('.name').html();
});

将显示&#34; 2016年1月&#34;

所以在你的代码中,如果我正确的话,它应该是这样的:

var months= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var milis = Date.parse("Mon Jan 25 2016 00:00:00 GMT-0500 (EST)");
var d = new Date(milis)
console.log(months[d.getMonth()] + " " + d.getFullYear());