=TODAY() 返回今天的日期,=NOW() 返回当前的日期和时间。两个函数都没有参数,而且在工作簿每次重新计算时都会更新,所以你今天看到的值明天就会不同。如果要一个永远不变的日期,请改按 Ctrl+;(Mac 上按 Control+;)。
| A | B | |
|---|---|---|
| 1 | TODAY | NOW |
| 2 | 2026-10-04 | 2026-10-04 9:22 |
上面的表格显示的是页面加载时的日期和时间。工作表每次重新计算时,NOW 都会更新到当前这一分钟,而 TODAY 每天只在午夜变化一次。括号必不可少:不带括号的 =TODAY 会返回 #NAME?。
距某个日期还有几天
TODAY() 和其他日期一样是一个天数,所以拿日期减去它就得到倒计时。=B2-TODAY() 是距 B2 中的日期还剩的天数,=TODAY()-B2 是从那天起已经过去的天数。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Task | Deadline | Days left | Status |
| 2 | Report | 2026-12-31 | 88 | Open |
| 3 | Audit | 2027-03-15 | 162 | Open |
| 4 | Budget | 2025-11-30 | -308 | Overdue |
C 列的数字每天减 1。预算的截止日期已经过了,所以天数是负数,状态显示 Overdue。如果要计算剩余的工作日,请用 =NETWORKDAYS(TODAY(),B2)(参见 NETWORKDAYS 和 WORKDAY)。
在其他公式中使用 TODAY
公式中任何需要日期的地方,都可以用 TODAY() 作为那个日期:今年的年份、本月最后一天、30 天后的日期,或者某人的年龄(计算年龄)。
| A | B | |
|---|---|---|
| 1 | What | Formula |
| 2 | Year | 2026 |
| 3 | Month | 10 |
| 4 | End of this month | 2026-10-31 |
| 5 | In 30 days | 2026-11-03 |
| 6 | First of this month | 2026-10-01 |
B5 每天都会变;B3、B4 和 B6 在每月的第一天变化,B2 在 1 月 1 日变化。EOMONTH 的第二个参数为 -1 时返回上个月的最后一天,所以加 1 就是本月的第一天。
只取当前时间,不要日期
NOW() 的整数部分是日期,小数部分是时间:正午是一天的 .5。=MOD(NOW(),1) 保留小数部分,也就是单纯的时间。把单元格设置为 h:mm 格式就会显示为钟点时间,或者用 TEXT 得到一个文本标签。
| A | B | C | |
|---|---|---|---|
| 1 | Time | As text | Hour |
| 2 | 9:22 | 9:22 | 9 |
A2 是一个显示为时间的数字(一天的几分之几),所以可以参与时间计算;B2 是文本,不能参与计算。C2 是 0 到 23 之间的整数小时。
插入不会变化的日期或时间
凡是要记录某件事发生时间的地方,比如订单记录或签署的表单,都不能用 TODAY 和 NOW,因为到了明天,每一行都会显示明天的日期。请改为输入固定值:
| 插入 | Windows | Mac |
|---|---|---|
| 今天的日期 | Ctrl+; | Control+; |
| 当前时间 | Ctrl+Shift+; | Command+; |
| 日期和时间 | Ctrl+;,空格,Ctrl+Shift+; | Control+;,空格,Command+; |
要把已有的公式定住,先复制这些单元格,然后选择 开始 > 粘贴 > 粘贴值(Windows:按 Ctrl+Alt+V,再按 V 和 Enter;Mac:按 Control+Command+V,再选“值”)。公式会被替换成它在那一刻显示的日期。
练习:用固定日期计算剩余天数
为了方便练习,下面的表格在 E2 中用一个固定的“截至”日期代替 TODAY(),这样答案每天都一样。在你自己的工作簿中,这个公式里写 E2 的地方要换成 TODAY()。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Task | Deadline | Days left | As of | |
| 2 | Launch | 2026-11-20 | 2026-10-01 |
轮到你了: 在 C2 中计算从 E2 的日期到 B2 的截止日期还剩几天。
为什么 TODAY 和 NOW 一直在变
TODAY、NOW、RAND 和 OFFSET 是易失性函数:工作簿中任何内容发生变化、文件打开时以及按 F9 时,Excel 都会重新计算它们。倒计时能保持最新靠的就是这一点,但它有两个副作用:
- 即使你只是打开看了一下文件,关闭时 Excel 也会询问是否保存更改,因为易失性单元格重新计算过了。
- 一个有几千个 TODAY() 单元格的大型工作簿可能会变慢。把
=TODAY()放在一个单元格里,比如$H$1,让其他公式都引用它。
如果显示的日期不对,请检查电脑的时钟:TODAY 读取的是系统日期。如果它不更新,工作簿可能处于手动计算模式:公式 > 计算选项 > 自动。
常见问题
Excel 中怎么插入今天的日期?
输入 =TODAY() 得到每天自动更新的日期,或者按 Ctrl+;(Mac 上按 Control+;)插入今天的日期作为固定值,之后不会再变。
Excel 中 TODAY 和 NOW 有什么区别?
=TODAY() 只返回日期,是一个整数天数。=NOW() 返回日期和当前时间,时间是小数部分。两者都会在工作簿重新计算时重新计算。
Excel 中怎么计算距某个日期还有几天?
用这个日期减去今天:=B2-TODAY()。结果每天减 1,日期过去之后就变成负数。
怎样让 TODAY() 不再变化?
公式本身无法定住,但你可以把它替换成它的值:复制单元格,然后选择 开始 > 粘贴 > 粘贴值。或者一开始就用 Ctrl+; 输入日期。
Excel 中怎么插入当前时间?
按 Ctrl+Shift+;(Mac 上按 Command+;)插入当前时间作为固定值。用公式的话,=NOW() 给出日期和时间,=MOD(NOW(),1) 只给出时间,再设置为 h:mm 格式。