Javascript: форматирование даты [дубликат]

Я хочу текущую дату / время, отформатированные в этом формате:

год + '-' + месяц + '-' + день + '' + час + ':' + минута + ':' + 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;

javascript,javascript,

1

Ответов: 4


0 принят

Используйте шаблонные литералы вместо конкатенации и 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);


0

Вы можете использовать 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)


0

Попробуй это?

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.


0

Используйте 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>

https://momentjs.com/

JavaScript, JavaScript,