当前位置: 首页 > news >正文

基于 Flutter × OpenHarmony 的日期格式化显示实践

基于 Flutter × OpenHarmony 的日期格式化显示实践

前言

在移动应用开发中,日期和时间的展示是非常常见的需求。尤其是在笔记、聊天、日志等应用场景下,用户更倾向于看到“今天”“昨天”这样的友好日期,而不是冗长的时间戳或标准日期格式。本文将结合Flutter × OpenHarmony跨端开发实践,分享如何实现友好的日期显示功能。


背景

在传统的日期显示中,开发者通常会直接展示YYYY-MM-DD HH:MM的标准格式。然而,这种方式对于用户来说不够直观,特别是在短期内频繁浏览内容时,识别成本较高。

为了提升用户体验,我们可以将日期格式化为以下规则:

  • 今天:显示为今天 HH:MM
  • 昨天:显示为昨天 HH:MM
  • 其他日期:显示为MM/DD HH:MM

通过这种方式,用户在使用应用时可以快速获取时间信息,同时界面也更加简洁美观。


Flutter × OpenHarmony 跨端开发介绍

OpenHarmony 是华为主导的开源操作系统,支持多设备、多终端协同开发。Flutter 作为跨平台 UI 框架,能够无缝构建高性能应用界面,将其与 OpenHarmony 结合后,可以实现:

  1. 一次开发,多端运行:手机、平板、智能屏均可使用同一套 Flutter 代码。
  2. 统一 UI/UX 风格:通过 Flutter 控件实现一致的界面体验。
  3. 高效数据处理:利用 Dart 的 DateTime 类与 Flutter 的 Widget 体系,实现高效的日期、时间处理和展示。

本文示例将演示如何在 Flutter 端处理日期格式化,并在 OpenHarmony 设备上展示。


开发核心代码

以下是实现日期格式化显示的核心函数示例:

/// 格式化日期显示/// 将 DateTime 转换为友好的日期字符串/// - 今天显示:今天 HH:MM/// - 昨天显示:昨天 HH:MM/// - 其他显示:MM/DD HH:MMString_formatDate(DateTimedate){finalnow=DateTime.now();finaltoday=DateTime(now.year,now.month,now.day);finalyesterday=DateTime(now.year,now.month,now.day-1);finalnoteDate=DateTime(date.year,date.month,date.day);if(noteDate.isAtSameMomentAs(today)){return'今天 ${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}';}elseif(noteDate.isAtSameMomentAs(yesterday)){return'昨天 ${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}';}else{return'${date.month}/${date.day}${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}';}}

代码解析

  1. 获取当前日期与时间

    finalnow=DateTime.now();finaltoday=DateTime(now.year,now.month,now.day);finalyesterday=DateTime(now.year,now.month,now.day-1);
    • now:当前完整时间(年月日时分秒)
    • today:只保留年月日,用于比较是否是今天
    • yesterday:通过减 1 天得到昨天日期
  2. 获取目标日期的年月日

    finalnoteDate=DateTime(date.year,date.month,date.day);
    • 只保留年、月、日,忽略时间部分,便于和today/yesterday比较。
  3. 判断日期并格式化

    if(noteDate.isAtSameMomentAs(today)){...}elseif(noteDate.isAtSameMomentAs(yesterday)){...}else{...}
    • 如果是今天 → 显示今天 HH:MM
    • 如果是昨天 → 显示昨天 HH:MM
    • 否则 → 显示MM/DD HH:MM
  4. 补零处理

    date.hour.toString().padLeft(2,'0')date.minute.toString().padLeft(2,'0')
    • 保证小时和分钟始终是两位数,增强视觉统一性。

心得

在实际开发中,这种简单的日期格式化函数已经可以满足大部分笔记或聊天类应用的需求。通过 Flutter 与 OpenHarmony 跨端结合,开发者可以轻松实现:

  • 统一的日期展示格式
  • 高度可读的用户界面
  • 对未来扩展(如周、月、年等格式)的良好支持

值得注意的是,如果应用需要支持跨时区多语言国际化,可以进一步结合intl包或 OpenHarmony 的本地化功能,实现更丰富的日期格式展示。


总结

本文分享了基于Flutter × OpenHarmony的日期格式化显示实践,核心功能在于:

  • 利用DateTime类提取年月日
  • 根据日期判断“今天”“昨天”
  • 输出用户友好的时间字符串

该方法轻量、易维护,并可无缝跨端使用,为多端应用提供了统一、直观的日期显示方案。

通过本文的实践可以看出,在 Flutter × OpenHarmony 的跨端开发场景下,日期格式化并不需要复杂的依赖或冗余设计。借助 Dart 原生的 DateTime 能力,我们即可根据业务语义对时间进行二次封装,将冰冷的时间数据转化为“今天”“昨天”等更符合用户直觉的展示形式。这种做法不仅提升了界面的可读性和用户体验,也保证了代码的简洁性与可维护性。对于多端一致性要求较高的应用而言,将此类基础能力进行统一封装,是构建高质量 Flutter × OpenHarmony 应用的重要一环,也为后续功能扩展和国际化支持奠定了良好基础。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

http://www.jsqmd.com/news/259147/

相关文章:

  • 对话《AI元人文:迈向造化文明的操作系统——理论阐述》【全】
  • 充电宝品牌怎么选?2026年最新聚焦安全痛点的终极指南与严选推荐。 - 品牌推荐
  • 2026年1月充电宝品牌实力排行榜:基于技术安全与用户口碑的TOP5权威榜单揭晓。 - 品牌推荐
  • 基于深度学习的口罩检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)
  • 充电宝品牌怎么选?2026年最新聚焦安全与便携的终极选择指南与实战推荐。 - 品牌推荐
  • 2026年1月充电宝品牌实力排行榜:基于安全技术与市场口碑的TOP5权威榜单揭晓。 - 品牌推荐
  • 基于深度学习的交通标志检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)
  • 权威数据发布:2026年主流充电宝品牌在安全与可靠性维度的深度调研分析。 - 品牌推荐
  • 基于深度学习的植物病害检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)
  • MICROSERVICE - Dev Mentor - Consul + Fabio
  • MICROSERVICE - Dev Mentor - Consul + Fabio
  • 基于深度学习的杂草检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)
  • DEV TEST- Test Driven Development (Integration Test)
  • dify/coze/n8n 智能体开发避坑指南
  • DEV TEST- Test Driven Development (Integration Test)
  • 基于深度学习的昆虫识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)
  • DEV TEST - Full stack Bootstrap and ASP.NET MVC - Testing
  • DEV TEST - Full stack Bootstrap and ASP.NET MVC - Testing
  • WEB - AngularJS and Typescript
  • 基于深度学习的鸡检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)
  • WEB - AngularJS and Typescript
  • VIRTUALIZATION - Kubernates - Azure Kubernetes Service
  • 基于深度学习的香蕉成熟度识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 西门子200Smart加Smart 1000 IE水处理程序画面案例。 采用成熟、可靠、先进、...
  • 基于深度学习的疲劳驾驶检测系统(YOLOv10+YOLO数据集+UI界面+Python项目+模型)
  • 强烈安利!自考必看TOP8一键生成论文工具测评
  • 基于深度学习的生菜周期检测系统(YOLOv10+YOLO数据集+UI界面+Python+模型)
  • 震惊!这家浙江头部AI科技公司,竟然藏着这样的秘密!
  • 计算机毕业设计 java 疫苗预约系统 基于 Java 的智能疫苗接种预约管理平台 Java 疫苗接种全流程管理系统
  • PERFORMANCE TEST - WebPerf Test