Я хочу текущую дату/время, отформатированные в этом формате:
year+ '-' + месяц + '-' + день + '' + час + ':' + минута + ':' + second + ':' +milli;
В настоящее время я делаю это как таковой. Есть ли более элегантный подход без использования внешних библиотек, таких как moment.js
?
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth()+1;
var day = now.getDate();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();
var milli = now.getMilliseconds();
if(month.toString().length == 1) {
var month = '0'+month;
}
if(day.toString().length == 1) {
var day = '0'+day;
}
if(hour.toString().length == 1) {
var hour = '0'+hour;
}
if(minute.toString().length == 1) {
var minute = '0'+minute;
}
if(second.toString().length == 1) {
var second = '0'+second;
}
if(milli.toString().length == 1) {
var milli = '0'+milli;
}
var m_session_startTime = year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second+':'+milli;
Используйте вместо шаблонов литералы вместо конкатенации и padStart()
чтобы заполнить padStart()
нули.
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, "0");
const day = String(now.getDate()).padStart(2, "0");
const hour = String(now.getHours()).padStart(2, "0");
const minute = String(now.getMinutes()).padStart(2, "0");
const second = String(now.getSeconds()).padStart(2, "0");
const milli = String(now.getMilliseconds()).padStart(4, "0");
const m_session_startTime = '${year}-${month}-${day} ${hour}:${minute}:${second}:${milli}';
console.log(m_session_startTime);
toJSON()
. Это не может быть улучшено без по- настоящему краткого анализа строк и манипуляций. Если вы хотите большей гибкости, вы должны получить все свойства с помощью методов, которые вы делали в начале, а затем объединить их.
Используйте moment.js. Отличная библиотека, предназначенная именно для вас. Вы можете использовать опцию.format.
var now = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
$('#timeval').text(now);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Current Time: <br>
<a id="timeval"></a>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
Вы можете использовать moment.js, это действительно поможет вам с датами форматирования.
console.log(moment().format('YYYY-MMMM-DD h:mm:ss:SSS'));
<script src="https://momentjs.com/downloads/moment.min.js"></script>
Эта команда выполняет работу довольно хорошо. moment()
- объект даты, когда нет аргументов, приведенных в этом примере, оно принимает текущее время, но вы также можете использовать moment("2018-12-4")
для определенных дат.
Затем вы можете отформатировать дату в соответствии с вашими потребностями,
ГГГГ - полный год (2018 год)
MMMM - это полное название месяца (июль)
(вы также можете использовать MMM для короткой версии имени месяца)
DD - это день как число (24)
(вы также можете использовать dddd для полного имени дня или ddd для короткого имени)
h - это час как число (22)
мм - это минута как число (23)
ss является вторым числом (как пример 22)
SSS - это миллисекунда как число (пример 245)
Попробуй это?
let date = new Date();
let jsonDate = date.toJSON();
jsonDate = jsonDate.replace(/[TZ]/g, " ");
jsonDate = jsonDate.replace(/\./g, ":");
console.log(jsonDate);
> 2018-07-24 20:32:06:435
Кроме того, если вы хотите разбить всю вещь на подстроки:
let date = new Date();
let jsonDate = date.toJSON();
jsonDate = jsonDate.replace(/[TZ]/g, " ");
jsonDate = jsonDate.replace(/\./g, ":");
let dateTime = jsonDate.split(" ");
let dt = dateTime[0].split("-");
let tt = dateTime[1].split(":");
let year = dt[0];
let month = dt[1];
let day = dt[2];
let hour = tt[0];
let minute = tt[1];
let second = tt[2];
let mili = tt[3];
console.log(jsonDate);
console.log(dateTime[0]);
console.log(dateTime[1]);
console.log([year, month, day, hour, minute, second, mili].join("~"));
console.log("Date: " + [year, month, day].join("-") + " Time: " + [hour, minute, second, mili].join(":"));
> 2018-07-24 21:03:05:706
> 2018-07-24
> 21:03:05:706
> 2018~07~24~21~03~05~706
> Date: 2018-07-24 Time: 21:03:05:706
Как вы могли заметить из этого ответа, я работаю с базами данных. У меня тяжелый баш, javascript, php, sql, golang background.
month = ('0'+month).substr(-2);
и т.п.