Javascript切片日期/时间带前导零
Posted
技术标签:
【中文标题】Javascript切片日期/时间带前导零【英文标题】:Javascript Slicing date/time with leading zero 【发布时间】:2018-11-08 11:22:27 【问题描述】:我正在尝试在日期的某个部分之前添加前导 0。例如,如果是上午 9:00,我想显示 09:00 而不是 9:0。我希望能够添加一个前导零,这样我就可以将它插入到 mysql 编码中。
我得到的结果是
2018-05-029 019:07:016
这是我的 javascript 代码:
var login_date="";
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth()+1; /*months are from 0 - 11 */
month = '0' + month.toString().slice(-2);
var day = d.getDate();
day = '0' + day.toString().slice(-2);
var hour = d.getHours();
hour = '0' + hour.toString().slice(-2);
var minute = d.getMinutes();
minute = '0' + minute.toString().slice(-2);
var second = d.getSeconds();
second = '0' + second.toString().slice(-2);
login_date = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
console.log(login_date);
【问题讨论】:
('0' + stringifiedValue).slice(-2)
对拼接结果进行切片。
检查这个问题:***.com/questions/5129624/… 我认为你做得过火了。有很多非常简单的方法可以从 JS 日期中干净地获取 MySQL 格式的日期。
逗号“,slice”不打印任何内容。如果单个数字没有前导零,MySQL 会抛出错误。
不,它需要通过 MySQL 格式。逗号中的答案不会打印任何内容。
有什么理由不使用d.toISOString()
?
【参考方案1】:
如有必要,您可以创建一个函数addZero()
来处理0
的串联。代码如下:
let addZero = (el) => ((el.toString().length == 1) ? '0' : '') + el.toString();
var login_date = "";
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1; /*months are from 0 - 11 */
var day = d.getDate();
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();
login_date = year + "-" + addZero(month) + "-" + addZero(day) + " " + addZero(hour) + ":" + addZero(minute) + ":" + addZero(second);
document.write(login_date);
【讨论】:
【参考方案2】:您可以检查该值是否小于 10 以在开头添加一个“0”。
例子
var seconds = seconds < 10 ? '0'+seconds : seconds;
你的最终字符串可以这样定义:
var login_date = year + "-"
+ (month < 10 ? "0" + month : month) + "-"
+ (day < 10 ? "0" + day : day) + " "
+ (hour < 10 ? "0" + hour : hour) + ":"
+ (minute < 10 ? "0" + minute : minute) + ":"
+ (second < 10 ? "0" + second : second) ;
【讨论】:
【参考方案3】:您可以检查变量length
的字符,如果小于两个,则添加一个0。
类似这样的:
var d = new Date();
var day = d.getDate();
var month = d.getMonth() + 1;
var year = d.getFullYear();
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();
if (month.toString().length < 2) month = '0' + month;
if (hour.toString().length < 2) hour = '0' + hour;
if (minute.toString().length < 2) minute = '0' + minute;
if (second.toString().length < 2) second = '0' + second;
console.log(year + '-' + month + '-' + day + " " + hour + ":" + minute + ":" + second)
【讨论】:
这正是我想要的。完美的。我不知道为什么我忘记了长度。当我第一次看到你的答案时,我就像“为什么我没有想到这一点?”。谢谢。以上是关于Javascript切片日期/时间带前导零的主要内容,如果未能解决你的问题,请参考以下文章
javascript Date format(js日期格式化)