最近在弄一个回忆网站,其中有个一板块类似于情侣空间的纪念日。

照着弄了个类似的,效果如下:

在处理过程中需要把时间戳转为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将日期转为距现在的时间长度的更多相关文章

  1. 【C#】string格式的日期转为DateTime类型及时间格式化处理方法

    日期格式:yyyyMMdd HH:mm:ss(注意此字符串的字母大小写很严格) yyyy:代表年份 MM: 代表月份 dd: 代表天 HH: 代表小时(24小时制) mm: 代表分钟 ss: 代表秒 ...

  2. JS对日期时间的操作

    代码: //判断是否超期(有效期开始超过一年后算已超期) function IsEffect(effectDate) { var val = ""; var currentDate ...

  3. Js获取日期时间及其它操作

    var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1 ...

  4. 使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间。

    使用html+css+js实现日历与定时器,看看今天的日期和今天剩余的时间. 效果图: 哎,今天就又这么过去了,过的可真快 . 代码如下,复制即可使用: <!DOCTYPE html> & ...

  5. 使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期

    1.使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期: 1 var newdate = new Date(); 2 var nowyear = newdat ...

  6. AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;

    js做日期选择: 实现当前年份的前5后5年的日期选择 实现功能:年份和月份页面加载完成使用JS循环添加,天数根据月份的变化动态添加改变 扩展功能:天数可以根据闰年平年变化 <body> & ...

  7. JS 操作日期

    var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-???? ...

  8. js Date 日期格式化(转)

    var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1 ...

  9. JS实现日期选择

    简单的JS实现日期选择,对于PHP来说就像是遍历一样,不过我个人觉得JS这个很有趣,随便记录一下 开始: <select name="gh_date"><opti ...

随机推荐

  1. GAN-生成手写数字-Keras

    from keras.models import Sequential from keras.layers import Dense from keras.layers import Reshape ...

  2. asp.net core 缓存和Session

    缓存 缓存在内存中 ASP.NET Core 使用 IMemoryCache内存中缓存是使用依赖关系注入从应用中引用的服务. 请在ConfigureServices中调用AddMemoryCache( ...

  3. .NetCore 下开发独立的(RPL)含有界面的组件包 (六)实现业务功能

    .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...

  4. CentOS升级glibc-2.14

    升级glibc-2.14用到的rpm https://pan.baidu.com/s/1v-Uk579TGM6498cExst6ow 先要安装gcc yum -y install gcc 执行: rp ...

  5. table无法控制宽度

    table-layout:fixed

  6. Visual Studio 中使用万能头文件 #include <bits/stdc++.h>

    最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h>  ,但VS中并没有,为了使用方便,可直接在VS中添加此头文件,方法如下: 1.在安 ...

  7. .net core2.1 - ef core数据库迁移,初始化种子数据

    起因:早上偶然看见一篇文章说是ef core(2.x)使用种子数据,主表子表迁移时候,正常情况下说是无法迁移成功,索性就试试,结果是和ef6的一样,没感觉有什么大的区别.一切OK,见下面内容. 1.首 ...

  8. 设置sde表空间为自动增长

    有的用户在测试数据时,希望在SDE表空间里面不受限制地导入数据,于是需要将SDE的表空间设置为自动增长. 过程描述 1.可以在创建sde表空间的时候,添加参数Autoextend on,修改后创建命令 ...

  9. Python_生成器generator

    生成器:调用时返回一个迭代器 如果一个函数中包含yield语法,那这个函数就会变成一个生成器 例1: def draw_money(draw): #这个函数称为生成器 while draw >0 ...

  10. Centos6.5系统压力测试过程大量TIME_WAIT

    统计tcp状态的命令: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' netstat -n | awk '/ ...