datetime/dateToTimestamp.js

/**
 * 将 Date 对象转换为 Unix 时间戳。
 * 验证 Date 对象是否有效,并允许选择输出时间戳的精度(秒或毫秒)。
 * 该函数将验证输入的 Date 对象是否表示有效的日期。
 * @author penn <https://github.com/penn201500>
 * @category datetime
 * @alias yd_datetime_dateToTimestamp
 * @param {Date} date - Date 对象。
 * @param {boolean} inMilliseconds - 如果为 true,则输出 13 位数字的时间戳(毫秒级),否则输出 10 位数字的时间戳(秒级)。默认为 false。
 * @returns {number|null} 对应的 Unix 时间戳,如果 Date 对象无效则返回 null。
 *
 * @example
 * // 示例: 有效的 Date 对象,输出秒级时间戳
 * console.log(dateToTimestamp(new Date())) // 输出: Unix 时间戳(10位数字)
 *
 * @example
 * // 示例: 有效的 Date 对象,输出毫秒级时间戳
 * console.log(dateToTimestamp(new Date(), true)) // 输出: Unix 时间戳(13位数字)
 *
 * @example
 * // 示例: 无效的 Date 对象
 * console.log(dateToTimestamp(new Date("invalid"))) // 输出: null
 *
 * @example
 * // 示例: 显然无效的 Date 对象
 * console.log(dateToTimestamp(new Date('1000-00-00 00:00:00Z'))) // 输出: null
 */
export default (date, inMilliseconds = false) => {
    // Check if 'date' is an instance of Date and it represents a valid date
    if (!(date instanceof Date) || isNaN(date.getTime())) {
        console.error('Invalid Date object.');
        return null;
    }
    return inMilliseconds ? date.getTime() : Math.floor(date.getTime() / 1000);
};