JS将日期转为距现在的时间长度
最近在弄一个回忆网站,其中有个一板块类似于情侣空间的纪念日。
照着弄了个类似的,效果如下:

在处理过程中需要把时间戳转为Date()对象,然后与本地时间相减获得时间差,通过运算转换成对应的年月日时长,最后转换成对应的字符串。这里我将这一系列操作封装成一个dateConver()函数。
下面给出源码。
HTML部分
<!--因为项目为纯页面文件没有涉及到数据库,所以这里将时间写在标签里-->
<div data-sjsel="flatty">
<div class="card">
<img class="card__picture" src="./images/item-1.jpg" />
<div class="card-infos">
<h2 class="card__title">2016-09-05</h2>
<!--这里添加一个自定义属性time用来直接放入时间-->
<p class="card__text" time="2016-09-05"></p>
</div>
</div>
</div>
JavaScript部分
const dateConver= time => {
//获取当前时间对象
const now = new Date();
//将传入的时间戳格式转为Date对象可以识别的格式,并将其转为一个Date()对象
const formatTime = new Date(time.replace(/-/g, "/"));
//格式化时间,直接相减为毫秒数,这里转为天数。
const daysLong = Math.ceil(
(Date.parse(now) - Date.parse(formatTime)) / (1000 * 60 * 60 * 24)
);
//下面获取整年整月天数,注意这里的年和月需要舍去小数部分。
//注意这里的年月日都是近似值,一个月30天,一年365日
let years = Math.floor(daysLong / 365) > 0 ? Math.floor(daysLong / 365) : "";
let months =
Math.floor((daysLong - years * 365) / 30) > 0
? Math.floor((daysLong - years * 365) / 30)
: "";
let days =
daysLong - years * 365 - months * 30 > 0
? daysLong - years * 365 - months * 30
: "";
console.log(days + " " + months + " " + years);
// 根据是否有整值重新赋值为字符串,方便直接返回一个完整的字符串。
years = years ? years + "年" : "";
months = months ? months + "个月" : "";
days = days ? days + "天" : "";
return `${time}<br/>已经${years}${months}${days}了<span>${daysLong}天</span>`;
//这里使用JQ获取所有带有自定义属性time的DOM元素
const timeLine = $("p[time]");
for (const ele in timeLine) {
if (timeLine.hasOwnProperty(ele)) {
const element = timeLine[ele];
// 读取元素的time属性值
const time = element.getAttribute("time");
element.innerHTML = dateConver(time);
}
}
JS将日期转为距现在的时间长度的更多相关文章
- 【C#】string格式的日期转为DateTime类型及时间格式化处理方法
日期格式:yyyyMMdd HH:mm:ss(注意此字符串的字母大小写很严格) yyyy:代表年份 MM: 代表月份 dd: 代表天 HH: 代表小时(24小时制) mm: 代表分钟 ss: 代表秒 ...
- JS对日期时间的操作
代码: //判断是否超期(有效期开始超过一年后算已超期) function IsEffect(effectDate) { var val = ""; var currentDate ...
- Js获取日期时间及其它操作
var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1 ...
- 使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间。
使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间. 效果图: 哎,今天就又这么过去了,过的可真快 . 代码如下,复制即可使用: <!DOCTYPE html> & ...
- 使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期
1.使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期: 1 var newdate = new Date(); 2 var nowyear = newdat ...
- AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;
js做日期选择: 实现当前年份的前5后5年的日期选择 实现功能:年份和月份页面加载完成使用JS循环添加,天数根据月份的变化动态添加改变 扩展功能:天数可以根据闰年平年变化 <body> & ...
- JS 操作日期
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-???? ...
- js Date 日期格式化(转)
var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1 ...
- JS实现日期选择
简单的JS实现日期选择,对于PHP来说就像是遍历一样,不过我个人觉得JS这个很有趣,随便记录一下 开始: <select name="gh_date"><opti ...
随机推荐
- GAN-生成手写数字-Keras
from keras.models import Sequential from keras.layers import Dense from keras.layers import Reshape ...
- asp.net core 缓存和Session
缓存 缓存在内存中 ASP.NET Core 使用 IMemoryCache内存中缓存是使用依赖关系注入从应用中引用的服务. 请在ConfigureServices中调用AddMemoryCache( ...
- .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...
- CentOS升级glibc-2.14
升级glibc-2.14用到的rpm https://pan.baidu.com/s/1v-Uk579TGM6498cExst6ow 先要安装gcc yum -y install gcc 执行: rp ...
- table无法控制宽度
table-layout:fixed
- Visual Studio 中使用万能头文件 #include <bits/stdc++.h>
最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h> ,但VS中并没有,为了使用方便,可直接在VS中添加此头文件,方法如下: 1.在安 ...
- .net core2.1 - ef core数据库迁移,初始化种子数据
起因:早上偶然看见一篇文章说是ef core(2.x)使用种子数据,主表子表迁移时候,正常情况下说是无法迁移成功,索性就试试,结果是和ef6的一样,没感觉有什么大的区别.一切OK,见下面内容. 1.首 ...
- 设置sde表空间为自动增长
有的用户在测试数据时,希望在SDE表空间里面不受限制地导入数据,于是需要将SDE的表空间设置为自动增长. 过程描述 1.可以在创建sde表空间的时候,添加参数Autoextend on,修改后创建命令 ...
- Python_生成器generator
生成器:调用时返回一个迭代器 如果一个函数中包含yield语法,那这个函数就会变成一个生成器 例1: def draw_money(draw): #这个函数称为生成器 while draw >0 ...
- Centos6.5系统压力测试过程大量TIME_WAIT
统计tcp状态的命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' netstat -n | awk '/ ...