HarmonyOS 鸿蒙Next中通知怎么显示时间

HarmonyOS 鸿蒙Next中通知怎么显示时间 notificationManager.publish,怎么把右上角的刚刚改为具体的发布通知的时间

8 回复

尊敬的开发者,您好!

当前HarmonyOS NEXT通知栏显示时间规格与竞品保持一致,均显示对应通知发布的相对时间。

更多关于HarmonyOS 鸿蒙Next中通知怎么显示时间的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


尊敬的开发者,您好!您的问题已受理,请您耐心等待,感谢您的理解与支持!

刚刚不就一分钟之内,

// 将相对时间转换为绝对时间
function convertRelativeToAbsolute(relativeTime) {
    const now = new Date();
    const timeMap = {
        '刚刚': now,
        '1分钟前': new Date(now - 60000),
        '10分钟前': new Date(now - 600000),
        '1小时前': new Date(now - 3600000),
        '1天前': new Date(now - 86400000)
    };
    
    return timeMap[relativeTime]?.toLocaleTimeString('zh-CN', { 
        hour: '2-digit', 
        minute: '2-digit' 
    }) || relativeTime;
}

// 示例用法
const notificationTime = '10分钟前'; // 从通知框获取的时间
const absoluteTime = convertRelativeToAbsolute(notificationTime);
console.log(absoluteTime); // 输出:15:00

实现逻辑:

  1. 创建时间映射表,将相对时间字符串映射到对应的绝对时间
  2. 使用 toLocaleTimeString 方法格式化为 HH:mm 格式
  3. 如果传入的时间不在映射表中,返回原时间字符串

使用场景:

  • 通知系统时间显示
  • 消息时间戳显示
  • 动态内容发布时间显示

注意事项:

  • 需要根据实际业务场景扩展时间映射表
  • 考虑时区差异问题
  • 对于更复杂的时间格式,可以使用 Moment.js 或 date-fns 等库

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

你可以也问问华为客服,如果不能设置,可以反馈。

在HarmonyOS Next中,通知时间显示由系统自动管理。通知发送时,系统会自动添加时间戳,无需开发者手动设置。开发者只需调用HarmonyOS通知服务API发送通知内容,系统界面会统一显示通知的接收时间。若需自定义时间显示,可通过NotificationRequest中的additionalText字段添加特定文本信息,但系统仍会保留默认时间戳。所有时间格式遵循系统设置的区域和语言规范。

在HarmonyOS Next中,可以通过设置NotificationRequest的deliveryTime属性来显示具体时间而非默认的“刚刚”。具体实现如下:

  1. 创建NotificationRequest时设置deliveryTime:
let notificationRequest: notificationManager.NotificationRequest = {
  id: 1,
  content: {
    title: '通知标题',
    text: '通知内容',
    additionalText: '附加信息'
  },
  deliveryTime: new Date().getTime() // 设置为当前时间戳
};
  1. 发布通知:
notificationManager.publish(notificationRequest);

设置deliveryTime后,通知右上角将显示实际发布时间而非“刚刚”。该时间会自动格式化为相对时间(如“5分钟前”)或绝对时间格式,具体显示取决于系统设置和当前时间间隔。

注意:deliveryTime应设置为有效的时间戳(毫秒数),若设置为未来时间,通知将在指定时间触发;若设置为过去时间,则立即显示并展示实际时间差。

回到顶部