Я написал несколько javascript как часть приложения Vue JS, в котором есть очень простой блог.
Я хочу иметь возможность скрыть запись в блоге, если в будущем дата создания блога будет установлена на основе даты и времени. Это строковый формат, который будет введен вручную.
Я использую Moment JS, но мне интересно, есть ли более простой способ сделать это по сравнению с тем, что у меня есть в настоящее время, так как я чувствую, что мой код выглядит довольно сложным для этой простой задачи.
Я написал код и прикреплю его следующим образом:
HTML-разметка
<div id="app">
<div class="blog-card" v-for="blog in blogs" :key="blog.id" v-if="activeBlogDate >= blog.date">
{{ blog.title }}
{{ blog.date }}
</div>
{{ activeBlogDate }}
</div>
JS
new Vue({
el: '#app',
data: {
activeBlogDate: null,
blogs: [
{
title: "blog title 1",
date: "2019-08-30 16:08:16"
},
{
title: "blog title 2",
date: "2019-05-09 19:51:16"
}
]
},
created() {
var d = new Date();
var currentYear = d.getFullYear()
var currentMonth = d.getMonth() + 1
var currentDay = d.getDate()
var currentHour = d.getHours()
var currentMinute = d.getMinutes()
var currentSecond = d.getSeconds()
if (currentMonth < 10) currentMonth = '0' + currentMonth
if (currentDay < 10) currentDay = '0' + currentDay
var currentDateTime = currentYear + '-' + currentMonth + '-' + currentDay + ' ' + currentHour + ':' + currentMinute + ':' + currentSecond
this.activeBlogDate = currentDateTime
setInterval(() => {
this.activeBlogDate = currentDateTime
}, 1000)
}
});
Хотя это, кажется, работает, и я понимаю, что это требует небольшой доработки, я чувствую, что это может быть довольно ненадежным, учитывая количество кода, чтобы просто получить текущую дату / время, чтобы соответствовать формату даты в блоге по объектам.
Я не могу изменить формат даты, поскольку в рабочей среде существует более 200 сообщений в блоге.
Есть ли более чистый способ делать то, что я делаю здесь?