UNPKG

phx-node

Version:

PHX NODE

138 lines (137 loc) 6.12 kB
import { IDatePartsNumber, IDatePartsString } from "src/lib/helper"; export declare class PHXDateHelpers { calculateDateDifference(startDate: Date, endDate: Date, valueReturnIfNotValidDate?: number): number; dateStrToDate(date: string): string; dateStrToDateTime(date: string, isTimeFirst?: boolean): string; formatDateHyphen(timestamp: any): string; calculateRemainingTime(startTimeString: any, endTimeString: any): string; dateStrToTime(dateStr: string): string; isPastDate(compareDate: string): boolean; /** * Hàm phân tách chuỗi ngày tháng năm giờ phút * @param isoString ISO string * @returns Object with date parts */ parseDateToParts(isoString: string, type: "number"): IDatePartsNumber; parseDateToParts(isoString: string, type?: "string"): IDatePartsString; unaccentValue(rawValue: string): string; stringToDate(dateString: string): Date; /** * Chuyển đổi chuỗi ngày tháng sang tên thứ trong tuần (tiếng Việt). * * Mục đích: dùng để hiển thị nhãn thứ trong tuần trên response trả về kèm tên thứ. * * Đầu vào: ISO 8601 string, ví dụ: * - "2026-05-20" (date only) * - "2026-05-20T07:00:00.000Z" (UTC — lưu ý: có thể lệch ngày nếu server không chạy UTC+7) * - "2026-05-20T07:00:00.000+07:00" (có offset, khuyến nghị dùng để tránh lệch ngày) * * Cách lấy nhanh date string trong JS: * const dateStr = new Date().toISOString(); // "2026-05-20T07:00:00.000Z" * const dateStr = apiResponse.created_at; // Hasura/API trả sẵn ISO string, dùng trực tiếp * * Đầu ra: tên thứ tiếng Việt, hoặc null nếu date rỗng. * * @example * dateStringToDayLabel("2026-05-20T07:00:00.000+07:00") // "Thứ 4" * dateStringToDayLabel("2026-05-17T07:00:00.000+07:00") // "Chủ nhật" * dateStringToDayLabel("") // null */ dateStringToDayLabel(date: string): string | null; isValidDateString(dateString: string): boolean; /** * Cộng hoặc trừ một số ngày vào ngày đầu vào và trả về `Date` mới. * * Hàm này không mutate đối tượng `Date` truyền vào. Giá trị ngày được chuẩn hóa * về chuỗi `YYYY-MM-DD`, chuyển sang số ngày tuyệt đối để cộng/trừ, sau đó dựng * lại thành `Date`. * * @param {Date} date Ngày gốc cần tính toán. * @param {number} amount Số ngày cần cộng thêm. Dùng số âm để lùi ngày. * @returns {Date | null} Ngày mới sau khi dịch chuyển, hoặc `null` nếu `date` không hợp lệ. * @memberof PHXDateHelpers */ addDays(date: Date, amount: number): Date; /** * Lấy ngày bắt đầu của lưới calendar tháng theo chuẩn tuần bắt đầu từ thứ Hai. * * Ví dụ: nếu ngày đầu tháng rơi vào thứ Sáu thì hàm sẽ trả về ngày thứ Hai của * cùng hàng đầu tiên trong lịch, để có thể render đủ grid 7 cột. * * @param {Date} firstDateOfMonth Ngày đầu tiên của tháng đang hiển thị. * @returns {Date | null} Ngày bắt đầu của lưới calendar, hoặc `null` nếu đầu vào không hợp lệ. * @memberof PHXDateHelpers */ getGridStartDate(firstDateOfMonth: Date): Date; /** * Kiểm tra một ngày có rơi vào cuối tuần hay không. * * Cuối tuần ở đây gồm: * - Thứ 7 * - Chủ nhật * * @param {string} date Chuỗi ngày đầu vào. * @returns {boolean} `true` nếu là cuối tuần, ngược lại là `false`. * @memberof PHXDateHelpers */ isWeekend(date: string): boolean; /** * Tính thứ trong tuần từ chuỗi ngày có định dạng `YYYY-MM-DD`. * * Hàm này parse chuỗi ngày thành các phần số rồi chuyển tiếp sang bộ tính weekday nội bộ. * * @private * @param {string} value Chuỗi ngày định dạng `YYYY-MM-DD`. * @returns {number} Chỉ số thứ trong tuần, với `0 = Chủ nhật``6 = Thứ 7`. * @memberof PHXDateHelpers */ private getWeekdayFromYmdString; /** * Tính thứ trong tuần từ năm, tháng, ngày. * * @private * @param {number} year Năm. * @param {number} month Tháng, tính từ `1` đến `12`. * @param {number} day Ngày trong tháng. * @returns {number} Chỉ số thứ trong tuần, với `0 = Chủ nhật``6 = Thứ 7`. * @memberof PHXDateHelpers */ private getWeekdayFromYmd; /** * Chuyển một ngày dương lịch thành số ngày tuyệt đối theo thuật toán civil date. * * Hàm này phục vụ cho các phép tính cộng/trừ ngày mà không phụ thuộc trực tiếp * vào thao tác mutate của `Date`. * * @private * @param {number} year Năm. * @param {number} month Tháng, tính từ `1` đến `12`. * @param {number} day Ngày trong tháng. * @returns {number} Số ngày tuyệt đối dùng cho tính toán nội bộ. * @memberof PHXDateHelpers */ private daysFromCivil; /** * Chuyển số ngày tuyệt đối về lại ngày dương lịch. * * @private * @param {number} days Số ngày tuyệt đối. * @returns {{ year: number; month: number; day: number }} Đối tượng ngày tương ứng. * @memberof PHXDateHelpers */ private civilFromDays; /** * Bổ sung số 0 ở đầu để đảm bảo chuỗi số có độ dài 2 ký tự. * * Ví dụ: * - `1` -> `"01"` * - `9` -> `"09"` * - `12` -> `"12"` * * @private * @param {number} value Giá trị số cần chuẩn hóa. * @returns {string} Chuỗi 2 ký tự. * @memberof PHXDateHelpers */ private pad2; }