如何仅从 vue js html 中的日期中提取年份并仅打印该年份?

Posted

技术标签:

【中文标题】如何仅从 vue js html 中的日期中提取年份并仅打印该年份?【英文标题】:How to extract only year from date in vue js html and print only that year? 【发布时间】:2018-10-05 15:03:47 【问题描述】:
"status":true,"data":["_id":"5addb7cbcd79850454bceb9f","no":12123,"orDate":"2010-01-01T00:00:00.000Z","oldness":"5","_id":"5ae02a26de15e934ac70ee8f","no":11223,"orDate":"2004-01-01T00:00:00.000Z","oldness":"5","_id":"5ae02a26de257934ac70ee8f","no":12311,"orDate":"1994-01-01T00:00:00.000Z","oldness":"5"]

这是我的 json 响应。我只需要在 vue js html 中从 orDate 打印年份。

我怎样才能做到这一点。

我的html代码是

<div id="app">
<div v-for="aln in data">
aln._id
aln.no
aln.orDate
</div>
</div>

我或日期,我只需要打印从日期开始的年份。如果日期是 2010-01-01T00:00:00.000Z,我只需要打印 2010

我的vue js代码是

app = new Vue(
el: "#iapp",
  data: 
    data:[],
  ,
mounted: function() 
 var vm = this;
         $.ajax(
            url: "http://localhost:4000/get/l/",
            method: "GET",
            dataType: "JSON",
            success: function(e) 
            if (e.status == 1)  
             vm.data = e.data;
             console.log(vm.data);
                       
            ,
        );
,
)

【问题讨论】:

【参考方案1】:

我认为你有两个选择:

    "2010-01-01T00:00:00.000Z".slice(0,4) new Date("2010-01-01T00:00:00.000Z").getFullYear()

【讨论】:

【参考方案2】:

BEWARE THE TIMEZONE。接受的答案落入陷阱!将您的设备时区设置为负数(伦敦西部),您将获得 2009 年。

到目前为止,从 ISO 日期字符串中恢复一年的最安全方法是 .substring(0,3)。如果您想将日期重新水化为日期对象,对其进行格式化、比较或进行算术运算,那么您需要非常小心以避免在序列化/显示时获得时区。

To do this safely, use getUTCFullYear()

【讨论】:

【参考方案3】:

既然你有一个格式良好的日期字符串,你可以从字符串中初始化一个日期对象并调用getFullYear()

var date = new Date("2010-01-01T00:00:00.000Z");
console.log(date.getUTCFullYear());

您可以尝试在集合中创建这样的年份键,并在模板中使用该键:

success: function(e) 
  if (e.status == 1)  
    vm.data = e.data;
    vm.data.forEach(item => 
      var date = new Date(item.orDate);
      item.year = date.getUTCFullYear();
    );
    ...

在您的模板中,而不是 orDate,而是显示 year

aln.year

编辑 1:

正如@bbsimonbb 指出getFullYear() 的问题,我已经更新了我的代码以改用getUTCFullYear()

【讨论】:

BEWARE THE TIMEZONEgetFullYear() 将“帮助”推断当地时区。伦敦以西的任何地方,还不是 2010 年,你应该看到 2009 年? @bbsimonbb -- 谢谢。我已经更新了我的代码来解决这个问题。【参考方案4】:

你可以像这样简单地给予。

<div id="app">
<div v-for="aln in data">
aln._id
aln.no
new Date(aln.orDate).getFullYear()
</div>
</div>

【讨论】:

如何只显示该日期的 2000-10-01 @BegCoder,您可以使用它。 aln.orDate.toString().slice(0,10)

以上是关于如何仅从 vue js html 中的日期中提取年份并仅打印该年份?的主要内容,如果未能解决你的问题,请参考以下文章

熊猫:仅从日期时间列中提取日历年

我们如何仅从 Oracle 中具有各种日期和字符串格式的列中提取日期?

仅从 Datetime Moment.js 对象中提取时间

仅从时刻对象中提取日期

仅从日期时间字段(mysql)中提取日期并将其分配给 php 变量

如何在SAS中按十年分类日期