Temporal.PlainDate.prototype.dayOfYear

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Thuộc tính accessor dayOfYear của các instance Temporal.PlainDate trả về một số nguyên dương đại diện cho chỉ mục ngày trong năm dựa trên 1 của ngày này. Ngày đầu tiên của năm này là 1, và ngày cuối cùng là daysInYear. Nó phụ thuộc vào lịch.

Set accessor của dayOfYearundefined. Bạn không thể thay đổi thuộc tính này trực tiếp. Để tạo đối tượng Temporal.PlainDate mới với giá trị dayOfYear mong muốn, sử dụng phương thức add() hoặc subtract() với số days phù hợp.

Ví dụ

Sử dụng dayOfYear

js
const date = Temporal.PlainDate.from("2021-07-01");
console.log(date.dayOfYear); // 182

const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=chinese]");
console.log(date2.dayOfYear); // 140

const date3 = Temporal.PlainDate.from("2020-07-01");
console.log(date3.dayOfYear); // 183; 2020 là năm nhuận

Thay đổi dayOfYear

PlainDate không hỗ trợ thay đổi dayOfYear trực tiếp. Để thay đổi ngày trong năm, bạn cần tính toán sự khác biệt về số ngày so với ngày trong năm mong muốn, sau đó sử dụng add hoặc subtract để điều chỉnh ngày tháng phù hợp. Ví dụ, để thay đổi sang ngày thứ 100 của năm này (dù trước hay sau):

js
function getDayInSameYear(date, destDayOfYear) {
  return date.add({ days: destDayOfYear - date.dayOfYear });
}

console.log(
  getDayInSameYear(Temporal.PlainDate.from("2021-07-01"), 100).toString(),
); // 2021-04-10
console.log(
  getDayInSameYear(Temporal.PlainDate.from("2021-01-01"), 100).toString(),
); // 2021-04-10
console.log(
  getDayInSameYear(Temporal.PlainDate.from("2020-01-01"), 100).toString(),
); // 2020-04-09

Theo mặc định, with() kẹp ngày vào phạm vi các giá trị hợp lệ. Vì vậy bạn luôn có thể sử dụng { month: 1, day: 1 } để đặt ngày về ngày đầu tiên của năm, ngay cả khi ngày đầu tiên không có số 1. Tương tự, sau đây sẽ đặt ngày về ngày cuối cùng của năm, bất kể tháng cuối cùng hay năm có bao nhiêu ngày:

js
const date = Temporal.PlainDate.from("2021-07-01");
const lastDay = date.with({ month: Number.MAX_VALUE, day: Number.MAX_VALUE }); // 2021-12-31

Đặc tả

Thông số kỹ thuật
Temporal
# sec-get-temporal.plaindate.prototype.dayofyear

Tương thích trình duyệt

Xem thêm