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 ...
随机推荐
- oracle数据库无法连接 The Network Adapter could not establish
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 这个错误 ...
- docker文件复制到centos/linux/ubantun环境下
1.有些时候我们需要将容器里面的文件,弄到系统里面来分析,像报错log等 格式:docker cp 容器名:文件在容器里面的路径 要拷贝到宿主机的对应路径 2.有些情况下,我们需要将文 ...
- 读书笔记——《You Don't Know JS》
第一部:<You don't know JS: this & Object prototype> 第三章 Object 对象常量 var myObject = {}; Object ...
- Java接口自动化测试之Maven项目的创建(一)
这里使用Idea创建Maven项目, 过程非常简单, 装好JDK和Idea 1. 安装完后,打开Idea, 选择File→New→Project, 如图 2. 选择maven, 点击Next, 如图 ...
- ready()事件;使外置JS代码正常运行
JavaScript代码放在哪里? 浏览器在渲染HTML页面时,是从头到尾,一行一行地检查执行的.如果JavaScript代码在前面,HTML元素在后面,遇到JavaScript选择一个还未渲染的HT ...
- azkaban使用
新建一个text文件,a.job,打包成zip包传到azkaban即可 方式1:job流 1. a.job内容范例: type=command command=hive shell command ...
- tomcat启动成功但是访问方面都是404
1.开发环境与错误情况 开发环境是jdk1.7+maven+git+spring MVC+spring+mybatis+mysql. 楼主做小例子的时候发现,tomcat成功启动,但是访问主页,页面提 ...
- php把一些预定义的 HTML 实体转换为字符。
htmlspecialchars_decode() echo htmlspecialchars_decode($condition,ENT_QUOTES) ' 会被转成 单引号
- 【Android】修改Android 模拟器IMEI
修改Android 模拟器IMEI 在.....\android_sdk\tools文件下找到emulator-arm.exe,使用UltraEdit文本编辑器打开,搜索CGSN关键字,把000000 ...
- Codeforces 980F Cactus to Tree 仙人掌 Tarjan 树形dp 单调队列
原文链接https://www.cnblogs.com/zhouzhendong/p/CF980F.html 题目传送门 - CF980F 题意 给定一个 $n$ 个节点 $m$ 条长为 $1$ 的边 ...