在vue.js中获取当前时间和日期

11

我需要在网页中获取当前时间和日期,我已经有了JavaScript代码。不确定如何在Vue.js中实现。我在此处附上代码示例。

HTML和纯JS代码:

<html>
    <body>

        <h2>JavaScript new Date()</h2>
        <p id="timestamp"></p>

        <script>
            var today = new Date();
            var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
            var time = today.getHours() + ":" + today.getMinutes() + ":" + 
            today.getSeconds();
            var dateTime = date+' '+time;
            document.getElementById("timestamp").innerHTML = dateTime;
        </script>

    </body>
</html>

我需要在Vue.js中实现,应该将代码包含在mounted、computed还是method中?


1
这取决于你想要做什么。如果你想在组件加载时执行它,就使用 mounted;如果你想让它在组件更新时更新,就使用 computed;如果你想在函数被调用时更新它,就使用 method。根据你当前的代码,我会建议使用 mounted - str
我只需要将它放置在我的网页中,就像一个元素一样。 - NandhaGopalElangovan
4个回答

35

由于当前时间不依赖于任何数据变量,因此我们可以将其编写在方法中,并在created中调用。

了解有关计算属性方法的更多信息,请点击这里

您可以将其复制并运行在CodingGround中。

<html>
   <head>
      <title>VueJs Introduction</title>
      <script type = "text/javascript" src = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js">
      </script>
   </head>
   <body>
      <div id = "intro" style = "text-align:center;">
         <h1>{{ timestamp }}</h1>
      </div>
      <script type = "text/javascript">
         var vue_det = new Vue({
            el: '#intro',
            data: {
               timestamp: ""
            },
            created() {
                setInterval(this.getNow, 1000);
            },
            methods: {
                getNow: function() {
                    const today = new Date();
                    const date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
                    const time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
                    const dateTime = date +' '+ time;
                    this.timestamp = dateTime;
                }
            }
         });
      </script>
   </body>
</html>

如何在不刷新页面的情况下获取当前时间的更新? - NandhaGopalElangovan
@saran 我已经更新了我的答案,你可以测试一下 =)) - vantrong291
这个答案虽然可行,但不是一个好的实践方式,会使你的应用程序变慢。如果可能的话,你应该找到一种不需要一直从JS调用中获取时间的方法。 - DrCord
为了正确格式化秒数,请将const time行更改为const time = today.getHours() + ":" + today.getMinutes() + ":" + (today.getSeconds() < 10 ? "0" + today.getSeconds() : today.getSeconds()) ; - Modermo

1
假设您有一个组件,例如Dashboard.vue,您可以使用getter:
<template>
  <v-container fluid>
    <h1>{{ timestamp }}</h1>
  </v-container>
</template>

<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';

@Component
export default class Dashboard extends Vue {
  get timestamp() {
    const today = new Date();
    const date = today.getFullYear() + '-' + (today.getMonth()+1) + '-' + today.getDate();
    const time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
    const timestamp = date + ' ' + time;
    return timestamp;
  }
}
</script>

0

我用 Vue.js 编写了这段代码,你也可以采用这种方式。

var first_time = '09:00:00'
var today = new Date()
var now_date = (today.getFullYear() + '-' + (today.getMonth()+1) + '-' + today.getDate());
var now_time = (today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds()).toString()

if (now_time === first_time){
console.log('true')
}else(){
console.log('false')
}

0
你可以用这个方法获取当前日期:
"(new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000)).toISOString().substring(0, 10)"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接