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

Expo中如何设置指定日期时间触发的调度通知

Expo 指定日期时间触发本地通知实现方法

你不需要手动计算当前时间到目标时间的秒数差,Expo 通知接口原生支持绝对时间触发配置,直接替换trigger参数的配置项即可。

核心配置逻辑

官方示例里用seconds字段配置的是相对当前时间的延迟触发,要实现指定日期时间点触发,只需要把trigger里的seconds换成date字段,值为目标触发时间对应的Date对象即可。

实现代码(以 2022/08/28 08:30AM 为例)

import * as Notifications from 'expo-notifications';

// 构造目标触发时间:本地时区2022年8月28日上午8:30
const targetDate = new Date(
  2022, // 年
  7,    // 月:注意JS Date月份从0开始计数,8月对应数值7
  28,   // 日
  8,    // 时:24小时制,上午8点传8,下午8点传20
  30    // 分
);

Notifications.scheduleNotificationAsync({
  content: {
    title: "Time's up!",
    body: 'Change sides!',
  },
  trigger: {
    date: targetDate,
  },
});

注意避坑

  • 月份计数规则:JS原生Date构造函数的月份参数是0索引,1月对应0、12月对应11,传值的时候别直接写自然月数字,否则会差整整一个月。
  • 时区问题:不推荐用new Date('2022-08-28T08:30:00')这类字符串格式构造时间,不同运行环境可能默认按UTC时区解析,导致通知触发时间偏移几个小时。用上面代码里传数字参数的写法,会默认使用设备本地时区,不会出现时区偏差。
  • 时间合法性校验:传入的targetDate必须是未来的时间,如果传了已经过去的时间点,通知会立刻触发,不会按预期等待。
  • 重复触发配置:如果需要按规则重复触发(比如每天8:30、每周一8:30),可以在trigger里额外加repeats: true字段,配合对应的日期规则即可实现循环通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:39:29