微信聊天日期转换
      * IOS 时间 有bug需要兼容: '2022-12-12' ==> '2022/12/12'
      * 每周的第一天是 周天~

/**获取当月第几周 */
function getMonthWeek(Date){let theSaturday = Date.getDate() + (6 - Date.getDay()); return Math.ceil(theSaturday / 7);
}/** 判断iOS*/
const isiOS = ()=>{const u = navigator.userAgent;let iOs = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端return iOs;
};/**阿拉伯数字 星期数转中文 */
function SectionToChinese(traget) {console.log(traget);let result = ''switch(traget) {case 0: result = '天'break;case 1: result = '一'break;case 2: result = '二'break;case 3: result = '三'break;case 4: result = '四'break;case 5: result = '五'break;case 6: result = '六'break;}return result;
}
/**个位数转换两位数 */
function twoNumber(number) {return Number(number) < 10 ? `0${number}` : number;
}/**日期格式 */
const fromCurrentTime = (target) => {let tempTraget = target;/**兼容IOS */if(isiOS())  tempTraget = tempTraget.replace(/-/g, '/');/**目标 */let tragetDate = new Date(tempTraget); const tragetYear = tragetDate.getFullYear(); /**目标年 */const tragetMonth = tragetDate.getMonth() + 1; /**目标月 */const tragetDay = tragetDate.getDate() ; /**目标日 */const tragetHours = tragetDate.getHours() ; /**目标时 */const tragetMinutes = tragetDate.getMinutes(); /**目标分 *//**当前 */let currentDate = new Date() /**当前日期 */const currentYear = currentDate.getFullYear(); /**当前年 */const currentMonth = currentDate.getMonth() + 1; /**当前月 */const currentDay = currentDate.getDate(); /**当前日 */const currentHours = currentDate.getHours() ; /**当前时 */// const currentMinutes = currentDate.getMinutes(); /**当前分 */let resultDate;/**比较年份 */if(tragetYear < currentYear) {  /**不同年 */resultDate = `${tragetYear}年${tragetMonth}月${tragetDay}日`} else {/**同年比较月份 */if(tragetMonth < currentMonth) { /**同年不同月 */resultDate = `${tragetMonth}月${tragetDay}日 ${twoNumber(tragetHours)}:${twoNumber(tragetMinutes)}`} else {/**同月比较周 */if(getMonthWeek(tragetDate) !== getMonthWeek(currentDate)) {  /**同月份不同周 */// if(Math.abs(getMonthWeek(tragetDate) - getMonthWeek(currentDate)) === 1) { resultDate = `${tragetMonth}月${tragetDay}日 ${twoNumber(tragetHours)}:${twoNumber(tragetMinutes)}`// }} else { /**同周比较差几天 */if(tragetDay === currentDay) { /**同周同天 *//**同天比较小时 */if(Math.abs(currentHours - tragetHours) === 0) { /**1h内 */resultDate = `刚刚`}  else {resultDate = `${twoNumber(tragetHours)}:${twoNumber(tragetMinutes)}`}} else if(Math.abs(currentDay - tragetDay) === 1) {  /**同周差一天 */resultDate = `昨天 ${twoNumber(tragetHours)}:${twoNumber(tragetMinutes)}`} else {resultDate = `星期${SectionToChinese(tragetDate.getDay())} ${twoNumber(tragetHours)}:${twoNumber(tragetMinutes)}`}}}}return resultDate;
}
const time = fromCurrentTime ('2022-04-02 18:18:00')
console.log(time)

类似微信聊天 日期算法(转换)相关推荐

  1. iOS实现类似微信聊天气泡

    1. 说明 要实现类似微信聊天气泡功能,主要有以下几个主要技术点需要实现: 背景图图拉伸后不变形 UILabel自适应宽度和高度 2. 背景图图拉伸后不变形 要实现背景图拉升不变形,就要设置只让指定部 ...

  2. uniapp - 通讯聊天功能示例源代码,类似微信聊天 / 电商淘宝京东 “买卖双方“ 消息沟通系统 / 各大应用简易聊天沟通的功能插件(超级详细代码和注释,开箱即用)全端兼容 H5 App 小程序

    前言 网上的教程鱼龙混杂太乱了,并且全都是各种引入关系.各种冗余代码,拿过来后根本无法进行改造. 本文实现了 uniapp 全平台兼容的 "1对1 即时聊天沟通" 的聊天窗口模板, ...

  3. uniapp - 实现类似微信聊天、淘宝买卖双方交流的简易聊天功能示例(开箱即用,完整源码与注释)全端兼容 H5 App 小程序,稳定无 BUG!

    介绍 本示例 100% 丝滑流畅可跨多端兼容,而且没有任何第三方插件和依赖. 如果要想实现一个类似像淘宝天猫这些买家和卖家沟通的系统(还有微信聊天这种),实际上非常难, 我打造了一个uniapp H5 ...

  4. php类似微信聊天框,仿微信聊天功能

    摘要: 微信聊天 window.onload = () => { // 获取按钮 let btn = document.getElementById('btn'); // 获取输入框 let t ...

  5. UIImageView 显示不规则图片,类似微信聊天气泡图片展示效果

    微信聊天气泡,图片充满显示,效果: -(void)layoutSubviews { [super layoutSubviews]; CAShapeLayer * _maskLayer = [CASha ...

  6. php类似微信聊天框,仿微信UI界面的PHP+Swoole多人聊天室 TP6框架

    仿微信UI界面的PHP+Swoole多人聊天室 TP6框架 介绍 基于swoole实现模仿微信的即时通讯聊天室 软件架构 使用thinkphp6编写 安装教程 导入install.sql到数据库 == ...

  7. 解决类似微信聊天界面软键盘和表情框冲突问题

    软键盘相关的知识: 针对软键盘,如果想让键盘覆盖我们视图控件.那么在 AndroidManifest.xml中对该Activity加上 android:windowSoftInputMode=&quo ...

  8. 实现类似微信聊天功能的mysql表设计

    前言: 最近设计了一套聊天功能,此功能支持人对人聊天.发送图片.查看聊天记录.按时间展示聊天列表.最后一条聊天数据及未读消息数 下面分享一下表结构及实现逻辑: 表结构: 1.聊天主表 id(主键id) ...

  9. 类似微信聊天界面加载历史记录的样式

    做IM聊天时,加载聊天历史纪录时,reload的时候,会把tableview滚动到顶部,用户体验效果并不好.我们需要在加载历史纪录时,不让他自动滚动. 上网找了一个方法,挺好用的: 创建一个继承于:U ...

最新文章

  1. GTK+, Qt, wxWidgets compare
  2. 独白:我为什么要从BTC转向支持BCH?
  3. Socket 编程概述
  4. maven项目里面程序不能正确读取resources目录配置文件
  5. windows文件中的中文在ubuntu下乱码(小弟参考了许多都不行,这个绝对行啊) .
  6. linux c绑定cpu_Linux内核路径优化之多核心平台TCP优化
  7. 2021-04-13 Linux I/O模型
  8. 设计模式之禅之设计模式-状态模式
  9. 【DFS + backtrack】LeetCode 37. Sudoku Solver
  10. Movavi Picverse for mac(AI智能修图工具)
  11. elasticsearch 集群
  12. 搭建Demo验证在一次Socket请求中有借助缓冲区处理数据
  13. 史上最全最新手机号码号段大全
  14. 由粒子加速器产生的反中子形成的白洞
  15. css中用来去除列前面的黑点,CSS中去除li前面的小黑点,a下划线 和ul、LI部分属性方法...
  16. C语言理论小学案例试讲,C语言试讲演示文稿.ppt
  17. 手动引入jar包,解决Dependency ‘XXX‘ not found的两种方式
  18. spa项目开发之vue+elementUi实现tab页
  19. 使用Pyppeteer进行gmail模拟登录
  20. 广东python编程比赛

热门文章

  1. UninstallPKG for Mac(PKG文件卸载)
  2. 微信装修装饰小程序源码开发方案
  3. 视频编解码 — DCT变换和量化
  4. 有助睡眠的方法有哪些?睡不着,这些方法就能帮到你
  5. 油溶性Cu,Mn共掺杂量子点ZnS量子点,ZnSe量子点,ZnInS量子点光转换材料
  6. 【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins
  7. 【线性代数】矩阵的初等变换与线性方程组
  8. 博雅互动(静态网页)分享
  9. MusicLibrary:一个丰富的音乐播放封装库
  10. 软件测试要学什么?软件测试学习路线资料分享