【问题标题】:getFullYear() of an object对象的 getFullYear()
【发布时间】:2018-12-04 23:21:55
【问题描述】:

不确定标题,但我对对象文字值有疑问。我有一个名为“人”的对象,具有名字、姓氏、国籍和出生。当我初始化它时,我将一些值放入对象中,并且“出生”值以“YYYY-MM-DD”的形式出现,但我必须提供全年“YYYY”。

let person = {
    firstName: '',
    lastName: '',
    nationality: '',
    born: '',

    print3: function() {
    return 'My name is ' + this.firstName + ' ' + this.lastName + ' from ' + this.nationality + '.' + ' I was born ' + this.born + '.';
    },

    init: function(firstName, lastName, nationality, born) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.nationality = nationality;
        this.born = born;
    }
};

初始化:

person2.init('Henri', 'Becquerel', 'France', '1852-12-15')

预期结果应该是:

"My name is Henri Becquerel from France. I was born 1852."

我知道我必须在代码中的某处使用 .getFullYear 函数,但我已经尝试了所有我能想到的地方,但我没有想法。

问候

【问题讨论】:

  • 获取born的前4个字符:born.slice(0, 4)

标签: javascript date object


【解决方案1】:

new Date() 将像您一样解析 ISO 8601 格式的字符串。所以你的init() 函数可以保存一个日期对象而不是字符串。然后你可以在this.born上拨打getFullYear()

let person = {
  firstName: '',
  lastName: '',
  nationality: '',
  born: '',

  print3: function() {
    return 'My name is ' + this.firstName + ' ' + this.lastName + ' from ' + this.nationality + '.' + ' I was born ' + this.born.getFullYear() + '.';
  },

  init: function(firstName, lastName, nationality, born) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.nationality = nationality;
    this.born = new Date(born);  // create a Date object
  }
};

person.init('Henri', 'Becquerel', 'France', '1852-12-15')
console.log(person.print3())

【讨论】:

  • 格式为 YYYY-MM-DD 格式的日期被解析为 UTC,因此在某些情况下年份会与当地年份不同,例如对于美国纽约的某人new Date('2018-01-01').getFullYear() 返回 2017。将字符串解析为日期,然后使用方法返回年份需要更多的工作,并且可能容易出错。简单地切片前四个数字(使用 substrsubstringslicesplit 等中的任何一个)是简单得多,并且避免了内置解析器的变幻莫测。
【解决方案2】:

只需创建一个日期实例并在其上调用 getFullYear()。

那就是:new Date('1852-12-15').getFullYear()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多