如何将我的日期从本地存储中取出并设置它们没有时间?

时间:2018-02-02 15:11:02

标签: javascript jquery html angularjs date

我有一个事件表单,我在其中获取信息将其放入localstorage(我不能使用API​​)并且我想从localstorage中取出startdate和enddate,更改它们以使它们显示为dd-mm-yyyy(不是yyyy-mm-ddT00:00:00.000Z)问题是将它们从阵列中取出并进行设置。我不知道从哪里开始......

这是我的JavaScript / jQuery:

.controller("Events", function($scope, $location) {

    let URL = "https://morning-castle-91468.herokuapp.com/";
    $scope.authToken = localStorage.getItem("authToken");
    $scope.username = localStorage.getItem("username");

    $scope.events = [];
    let lastEvent = 0;

    while (localStorage.getItem("event"+lastEvent)){

        $scope.events.unshift(JSON.parse(localStorage.getItem("event"+lastEvent)));
        lastEvent++;
    }

    JSON.parse(localStorage.getItem("event")) || [];

    $scope.submitForm = function() {
        if ($scope.eventForm.$valid) {
            $scope.event.username = $scope.username;

            localStorage.setItem("event"+lastEvent, JSON.stringify($scope.event));
        }
    };

})

这是我的HTML:

<div class="row eventcontent" ng-repeat="event in events">
    <div class="col-xs-12 eventpost">
        <div class="row-flex">
            <div class="col-xs-8 ">
                <h4>{{ event.title }}</h4>
            </div>
            <div class="col-xs-4 ">
                <h4>{{ event.name }}</h4>
            </div>
            <div class="col-xs-12 ">
                <td>{{ event.description }}</td>
                <br />
                <br />
                <p>{{ event.address }} <br /> {{ event.country }}</p>
                <br />
                <p>{{ event.status }}</p>
            </div>
            <div class="col-xs-12 ">
                <p>{{ event.startdate }} {{ event.enddate }}</p>
            </div>
        </div>
    </div>
</div> 

2 个答案:

答案 0 :(得分:0)

我不习惯Angular。

但无论如何,看起来你正在创建一个包含所有以前存储的events的数组event

您使用unshift在数组的开头添加每个event。结果可能就是这样(对于2个元素):

<强> $ scope.events:

[ // That is event1
  {
    name:someValue,
    description:someValue,
    address:someValue,
    country:someValue,
    status:someValue,
    startdate:"yyyy-mm-ddT00:00:00.000Z",
    enddate:"yyyy-mm-ddT00:00:00.000Z"
  },
// That is event0
  {
    //Same structure as above...
  }
]

现在,,假设您希望拥有最后event,这是events数组中的第一个元素,结构如上,我会尝试:

// Retreive the dates from the first array element... Only the part before the "T" in each string.
var retreived_start = $scope.events[0].startdate.split("T")[0];
var retreived_end = $scope.events[0].enddate.split("T")[0];

// Split the date by the "-" to re-order...
var start_parts = retreived_start.split("-");
var end_parts = retreived_start.split("-");

// YYYY-MM-DD results
var formatted_start = start_parts[2] +"-"+ start_parts[1] +"-"+ start_parts[0]; 
var formatted_end = end_parts[2] +"-"+ end_parts[1] +"-"+ end_parts[0];

// Place it in your Angular controller array (? -- I'm unsure here)
$scope.event.startdate = formatted_start;
$scope.event.enddate = formatted_end;

但是现在您已经修改了event数组 ...它可能会被存储为“格式化”...所以请注意这一点!

该行绝对没有任何内容:JSON.parse(localStorage.getItem("event")) || [];,因为未分配给变量,您可以安全地将其删除。

答案 1 :(得分:0)

要从localstroage获取数据,这将是 JSON ArrayList ,那么,

var retrievedData = JSON.parse(localStorage.getItem("event"+lastEvent));            
var setDateFormat = $filter('date')(new Date((retrievedData[1].substr(6)), 'dd-mm-yyyy'));