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

如何在JavaScript中计算未来日期的剩余秒数(适配react-native/expo)

计算未来日期的剩余秒数(适配react-native/expo通知调度)

可以通过以下步骤完成计算,核心是利用JavaScript的Date对象处理时间戳转换:

  • 步骤1:解析API返回的日期字符串为毫秒级时间戳
    直接使用Date构造函数解析MM/DD/YYYY HH:MM:SS格式的字符串,再通过getTime()获取毫秒级时间戳:

    const apiDateStr = '11/21/2022 19:00:00';
    const targetTimestamp = new Date(apiDateStr).getTime();
    
  • 步骤2:获取当前时间的毫秒级时间戳
    使用Date.now()快速获取当前时间的毫秒戳:

    const currentTimestamp = Date.now();
    
  • 步骤3:计算剩余秒数并处理边界情况
    先计算时间差(毫秒),转换为秒后取整,同时确保结果不为负数(避免目标时间已过期的情况):

    const remainingSeconds = Math.max(0, Math.floor((targetTimestamp - currentTimestamp) / 1000));
    

完整示例代码

// 处理API返回的日期
const scheduledDateTime = '11/21/2022 19:00:00';
const targetTime = new Date(scheduledDateTime).getTime();

// 获取当前时间
const currentTime = Date.now();

// 计算最终可用的剩余秒数
const remainingSeconds = Math.max(0, Math.floor((targetTime - currentTime) / 1000));

// 用于expo通知调度(示例)
// import * as Notifications from 'expo-notifications';
// Notifications.scheduleNotificationAsync({
//   content: {
//     title: '预定提醒',
//     body: '您的通知已触发',
//   },
//   trigger: { seconds: remainingSeconds },
// });

注意事项

  • 时区适配:如果API返回的是UTC时间,需要在日期字符串后拼接' UTC'再解析,避免本地时区偏差:
    const targetTimestamp = new Date(apiDateStr + ' UTC').getTime();
    
  • 精度处理:使用Math.floor确保得到整数秒,因为expo的通知调度seconds参数要求传入整数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:45:39