You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用fakerjs date.birthdate()设置max/min时如何获取4位年份

错误原因

faker.date.birthdate()的参数存在模式区分,未显式指定参数模式时,方法默认使用date模式,此模式下min和max接收的参数类型为日期对象或毫秒级Unix时间戳。直接传入数字70、1时,参数会被识别为距离1970-01-01 00:00:00 UTC偏移1毫秒、70毫秒的时间点,换算后为公元元年附近的日期,因此会返回37、79这类两位数甚至个位数的公元年份。
无参调用时方法会加载默认配置,自动将年龄范围设为18~100岁,因此返回结果符合4位年份的预期。

正确实现方式

两种写法都可以满足生成1~70岁之间随机出生日期的需求:

  • 写法1:显式指定年龄模式,直接传年龄数值
const birthdate = faker.date.birthdate({
  min: 1,
  max: 70,
  mode: 'age' // 声明传入的min/max是年龄值,不是时间戳
});

// 输出正常4位年份,例如1979、2012
console.log(birthdate.getFullYear());
  • 写法2:手动计算日期边界,传入date模式要求的日期对象
const today = new Date();
// 最早出生日期:70年前的今天
const earliestDate = new Date(today.getFullYear() - 70, today.getMonth(), today.getDate());
// 最晚出生日期:1年前的今天
const latestDate = new Date(today.getFullYear() - 1, today.getMonth(), today.getDate());

const birthdate = faker.date.birthdate({
  min: earliestDate,
  max: latestDate
});

// 输出正常4位年份
console.log(birthdate.getFullYear());

提示:如果不指定mode参数,无论传入数字还是日期对象,方法都会优先按时间边界解析,传纯数字必然会得到远古日期。

内容的提问来源于stack exchange,提问作者Mixchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:57:18