发布时间格式化工具函数

发布时间格式化工具函数

概述

本文档介绍了一套用于解析和格式化日期时间字符串的工具函数,旨在提供一种简便的方法来处理日期和时间数据,同时确保在不同设备和时区下的兼容性。

函数说明

parseDateString(dateString)

这个函数用于将一个符合特定格式的日期字符串解析为一个 Date 对象。它首先使用正则表达式来验证输入的字符串是否符合 YYYY-MM-DD HH:MM:SS 的格式。如果匹配成功,它会分别提取并转换年、月、日、时、分、秒的部分,然后创建并返回一个 Date 对象。如果输入的字符串不符合预期格式,函数将尝试直接使用 Date 对象的构造器来解析。

参数
  • dateString (String): 需要解析的日期时间字符串。
返回值
  • Date: 一个 Date 对象,表示输入字符串的日期和时间。
示例
const date = parseDateString("2024-05-06 12:34:56");
console.log(date); // 输出: Mon May 06 2024 12:34:56 GMT+0800 (中国标准时间)

formatPublishTime(createTime)

这个函数用于格式化发布时间,使其更易于阅读。它首先检查传入的时间字符串是否存在,如果不存在则返回空字符串。然后,函数将当前时间转换为北京时间,并计算与发布时间的时间差。根据时间差的不同,函数将返回不同格式的时间表述。

参数
  • createTime (String): 发布时间的日期时间字符串。
返回值
  • String: 格式化后的发布时间字符串。
示例
const formattedTime = formatPublishTime("2024-05-05 12:00:00");
console.log(formattedTime); // 输出: 昨天发布

注意事项

  • parseDateString 函数假定输入的日期时间字符串格式严格遵循 YYYY-MM-DD HH:MM:SS。如果输入的格式不符合预期,函数可能无法正确解析。
  • formatPublishTime 函数在计算时间差时,将当前时间转换为北京时间,这可能会影响到不同时区的用户。
  • 函数中的日期格式化遵循了一定的逻辑,但可能需要根据实际应用场景进行调整。

代码实现

以下是上述函数的具体实现代码:

// 解析日期字符串为Date对象,兼容iOS设备
function parseDateString(dateString) {const regex = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/;const match = dateString.match(regex);if (match) {const year = parseInt(match[1], 10);const month = parseInt(match[2], 10) - 1;const day = parseInt(match[3], 10);const hour = parseInt(match[4], 10);const minute = parseInt(match[5], 10);const second = parseInt(match[6], 10);return new Date(year, month, day, hour, minute, second);}return new Date(dateString);
}// 格式化发布时间
export const formatPublishTime = (createTime) => {if (!createTime) {return '';}const currentTime = new Date(new Date().getTime() + (new Date().getTimezoneOffset() / 60 + 8) * 3600 * 1000);const publishTime = parseDateString(createTime);const timeDiff = Math.floor(currentTime - publishTime / 1000);const dayDiff = Math.floor((currentTime.setHours(0, 0, 0, 0) - publishTime.setHours(0, 0, 0, 0)) / 1000 / 60 / 60 / 24);if (dayDiff === 0) {if (timeDiff < 60) {return `${timeDiff}秒前`;} else if (timeDiff < 3600) {const minutes = Math.floor(timeDiff / 60);return `${minutes}分钟前`;} else {const hours = Math.floor(timeDiff / 3600);return `${hours}小时前`;}} else if (dayDiff === 1) {return '昨天发布';} else if (dayDiff === 2) {return '前天发布';} else {const year = publishTime.getFullYear();const month = ('0' + (publishTime.getMonth() + 1)).slice(-2);const day = ('0' + publishTime.getDate()).slice(-2);return `${year}-${month}-${day}`;}
};

结语

通过使用这些工具函数,开发者可以更轻松地处理和展示日期时间信息,为用户提供更准确和友好的时间表述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CMakeLists.txt语法规则:foreach循环的关键字

一. 简介 前一篇文章学习了 CMakeLists.txt语法中 foreach循环的基本用法。文章如下&#xff1a; CMakeLists.txt语法规则&#xff1a;foreach 循环基本用法-CSDN博客 本文继续 CMakeLists.txt语法中 foreach循环语句&#xff0c;主要学习 foreach循环中的关键字。 二. CM…

Android 官网Ota介绍

构建 OTA 软件包 | Android 开源项目 | Android Open Source Project

(网络初识)

网络发展史 独立模式 在最开始计算机被发明出来&#xff0c;但网络还未普及的情况下&#xff0c;每个计算机之间都是相互独立的&#xff1a; 假设现在有一份数据需要处理&#xff0c;然后这份数据的处理又分给三个人分别处理。假设小松处理进行第一部分的处理&#xff0c;当小…

Skywalking的重要功能详解

学习本篇文章之前首先要了解一下Sky walking的基础知识 分布式链路追踪工具Sky walking详解 一&#xff0c;Sky walking监控数据库 在admin服务中&#xff0c;连接数据库查询user表中所有数据 引入依赖 <dependency><groupId>mysql</groupId><artifactI…

上位机图像处理和嵌入式模块部署(树莓派4b和qt应用全屏占有)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们都知道&#xff0c;嵌入式应用一般都是为了某一个特定应用而存在的。也就是说&#xff0c;和pc不同&#xff0c;这个嵌入式板子一般都是为了解…

消息队列面试题(四)

1. 如何监控消息队列的性能和健康状况&#xff1f; 监控消息队列的性能和健康状况是确保系统稳定、高效运行的关键环节。以下是一些建议的步骤和策略&#xff1a; 1. 使用内置指标 许多消息队列系统&#xff08;如Kafka、RabbitMQ等&#xff09;都提供了丰富的内置指标&…

10分钟快速使用Prometheus监控nginx

配置 Nginx 以输出监控数据 修改 Nginx 配置&#xff1a; 在 Nginx 配置文件 /etc/nginx/nginx.conf 中的 server 块添加如下配置&#xff1a; location /stub_status {stub_status on;access_log off;allow 0.0.0.0/0;deny all; }重启 Nginx&#xff1a; 通过命令重启 Nginx 服…

List转字符串

List:[“a”,“b”,“c”] 转换后&#xff1a;a,b,c 1、String.join // 1. 创建一个List集合 数量不可变List<String> list List.of("a", "b", "c");//list [a, b, c]System.out.println("list " list);String join Strin…

多组间比较散点图+误差棒(自备)

目录 数据 计算四分位值 作图 数据 rm(list ls()) library(ggplot2) library(dplyr) library(ggpubr) library(reshape2) library(tidyverse)data <- iris##鸢尾花数据集 dat <- data[,c(5,1)]#单个数据进行分析 计算四分位值 #根据分组计算四分位及中位数 dat1 …

Unit4

&#x1f4e3;Unit4 ✨1. merge&#xff0c;merse 合并&#xff1b;吞没 merge merger emerge emerging emergence emergency immerse immersive ✨2. ject 投掷&#xff1b;投射 eject inject injection project reject rejection subject be subject to sth subje…

【C++】HP-Socket(三):UdpClient、UdpServer、UdpCast、UdpNode的区别

1、简述 UDP是无连接的&#xff0c;在UDP传输层中并没有客户端和服务端的概念。但是可以在应用层定义客户端和服务端&#xff0c;可以灵活的互换客户端和服务端&#xff0c;或者同时既是客户端也是服务端。 HP-Socket中在应用层定义了四种UDP组件&#xff1a;UdpClient、UdpS…

使用Docker安装Redis

大家好&#xff0c;今天给大家分享一下如何使用docker安装Redis&#xff0c;关于docker的安装和常用命令&#xff0c;大家可以参考下面两篇文章&#xff0c;本文中不做过多描述。 Docker在Windows与CentOS上的安装 Docker常用命令 关于Redis的介绍与常用操作可以参考&#x…

中国科技大航海时代,“掘金”一带一路

文&#xff5c;白 鸽 编&#xff5c;王一粟 “这不就是90年代的内地吗&#xff1f;” 在深度考察完沙特市场后&#xff0c;华盛集团联合创始人兼CEO张霆对镜相工作室感慨道。 在张霆看来&#xff0c;沙特落后的基建&#xff08;意味着大量创新空间&#xff09;、刚刚开放…

AHB---数据总线

1. 数据总线 为了实现AHB系统&#xff0c;需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位&#xff0c;但这可以根据数据总线宽度进行更改。 数据总线包含以下部分&#xff1a; HWDATAHRDATAEndianness&#xff08;字节序&#xff09; 1.1 HWDATA 在写传输…

SD-Turbo部署

stabilityai/sd-turbo 官网 2023 年 11 月 30 日 继推出 SDXL-Turbo 之后&#xff0c;我们又发布了SD-Turbo。 2023 年 11 月 28 日 我们正在发布 SDXL-Turbo&#xff0c;一种闪电般快速的文本到图像模型。除了模型之外&#xff0c;我们还发布了技术报告 用法&#xff1…

【革命启示录】Spring框架:Java开发的“核聚变”能量源!

Hello&#xff0c;我是阿佑&#xff0c;今天给大家整的活是 《Java开发的“核聚变”能量源》 文章目录 Spring框架原理详解一、引言简介目的特点例子 二、背景介绍问题解决方案例子 三、核心概念3.1 控制反转&#xff08;Inversion of Control, IoC&#xff09;定义实现例子与代…

Sarcasm detection论文解析 |基于情感背景和个人表达习惯的有效讽刺检测方法

论文地址 论文地址&#xff1a;https://link.springer.com/article/10.1007/s12559-021-09832-x#/ 论文首页 笔记框架 基于情感背景和个人表达习惯的有效讽刺检测方法 &#x1f4c5;出版年份:2022 &#x1f4d6;出版期刊:Cognitive Computation &#x1f4c8;影响因子:5.4 &…

【python】基础语法

目录 一.注释和常见规则 二.变量及类型 1.数据类型 2.Numbers数字数据类型 3. 字符串类型 &#xff08;1&#xff09;字符串访问 &#xff08;2&#xff09;字符串拼接 4.List&#xff08;列表&#xff09;类型 &#xff08;1&#xff09; 定义 &#xff08;2&#…

【Linux】yum

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 觉得本片文章写的还不错的可以&#x1f44d;点赞&#x1f44d;、&#x1f31f;收藏&#x1f31f;、&#x1f4dd;…

Vue.js设计与实现——通过Proxy实现简单的响应式系统

文章内容来源&#xff1a;《Vue.js设计与实现》 —— 当当网 &#xff0c;作者&#xff1a;霍春阳&#xff08;HcySunYang&#xff09; 一、通过 Proxy 实现基本的响应式数据&#xff1a; function Section1 () {// 存储副作用函数的桶const bucket new Set();// 原始数据co…