14 ответов:
если вы используете узел.js, у вас обязательно будет EcmaScript 5, и поэтому дата имеет
toISOStringметод. Вы просите о небольшой модификации ISO8601:new Date().toISOString() > '2012-11-04T14:51:06.157Z'так что просто вырезать несколько вещей, и вы установили:
new Date().toISOString(). replace(/T/, ' '). // replace T with a space replace(/\..+/, '') // delete the dot and everything after > '2012-11-04 14:55:45'или в одну строку:
new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')ISO8601 обязательно UTC (также указывается трейлинг Z на первом результате), поэтому вы получаете UTC по умолчанию (всегда хорошо).
обновление 2017-03-29: добавлена дата-fns, некоторые заметки о моменте и датах
Обновление 2016-09-14: добавлен SugarJS, который, кажется, имеет некоторые отличные функции даты/времени.
хорошо, так как никто на самом деле не предоставил реальный ответ, вот мой.
библиотека, безусловно, лучший выбор для обработки даты и времени стандартным способом. Есть много крайних случаев в вычислениях даты/времени, поэтому полезно иметь возможность передать разработку в a библиотека.
вот список основных узлов совместимых библиотек форматирования времени:
- момент.js [спасибо Мустафе] "легкая (4.3 k) javascript библиотека дат для разбора, манипулирования и форматирования дат" - включает в себя интернационализацию, вычисления и относительные форматы дат -обновление 2017-03-29: не совсем так легкий больше, но все же наиболее комплексное решение, особенно если вам нужно поддержка часового пояса.
- дата-ФНС [добавлено 2017-03-29, благодаря Fractalf] маленький, быстрый, работает со стандартными объектами даты JS. Отличная альтернатива, если вам не нужна поддержка часовых поясов.
- SugarJS - общая вспомогательная библиотека, добавляющая столь необходимые функции к встроенным типам объектов JavaScripts. Включает в себя некоторые отличные возможности просмотра даты/времени.
- strftime - только то, что он говорит, красиво и просто
- dateutil - это тот, который я использовал до MomentJS
- node-formatdate
- TimeTraveller - "Time Traveller предоставляет набор полезных методов для работы с датами. От добавления и вычитания, до форматирования. Time Traveller только расширяет объекты date, которые он создает, не загрязняя глобальное пространство имен."
- Темпус [спасибо Dan D] - Обновление: это также может использоваться с узлом и развертываться с помощью npm, см. docs
есть также неузловые библиотеки:
- Datejs [благодаря Питеру Олсону] - не упакован в npm или GitHub, поэтому не так прост в использовании с узлом-не рекомендуется, так как не обновляется с 2007 года!
есть библиотека для преобразования:
npm install dateformatпосле этого напишите ваше требование:
var dateFormat = require('dateformat');затем свяжите значение:
var day=dateFormat(new Date(), "yyyy-mm-dd h:MM:ss");посмотреть dateformat
Я ничего не имею против библиотек в целом. В этом случае библиотека общего назначения кажется излишней, если другие части процесса подачи заявки не датируются сильно.
написание небольших полезных функций, таких как это, также является полезным упражнением как для начинающих, так и для опытных программистов и может быть учебным опытом для новичков среди нас.
function dateFormat (date, fstr, utc) { utc = utc ? 'getUTC' : 'get'; return fstr.replace (/%[YmdHMS]/g, function (m) { switch (m) { case '%Y': return date[utc + 'FullYear'] (); // no leading zeros required case '%m': m = 1 + date[utc + 'Month'] (); break; case '%d': m = date[utc + 'Date'] (); break; case '%H': m = date[utc + 'Hours'] (); break; case '%M': m = date[utc + 'Minutes'] (); break; case '%S': m = date[utc + 'Seconds'] (); break; default: return m.slice (1); // unknown code, remove % } // add leading zero if required return ('0' + m).slice (-2); }); } /* dateFormat (new Date (), "%Y-%m-%d %H:%M:%S", true) returns "2012-05-18 05:37:21" */
библиотека javascript сахар.js (http://sugarjs.com/) имеет функции для форматирования дат
пример:
Date.create().format('{dd}/{MM}/{yyyy} {hh}:{mm}:{ss}.{fff}')
легко читаемый и настраиваемый способ получить метку времени в нужном формате, без использования какой-либо библиотеки:
function timestamp(){ function pad(n) {return n<10 ? "0"+n : n} d=new Date() dash="-" colon=":" return d.getFullYear()+dash+ pad(d.getMonth()+1)+dash+ pad(d.getDate())+" "+ pad(d.getHours())+colon+ pad(d.getMinutes())+colon+ pad(d.getSeconds()) }(Если вам требуется время в формате UTC, то просто измените вызовы функций. Например "getMonth" становится "getUTCMonth")
вы можете использовать один из многих модулей, доступных для форматирования дат. @Julian-Knight дал довольно хороший список в своем ответе.
кроме того, еще один отличный способ достичь того, что вы ищете, - это использовать метод, указанный в объекте Date следующим образом:
var ts_hms = new Date(UTC); console.log( ts_hms.getFullYear() + '-' + ("0" + (ts_hms.getMonth() + 1)).slice(-2) + '-' + ("0" + (ts_hms.getDate() + 1)).slice(-2) + ' ' + ("0" + ts_hms.getHours()).slice(-2) + ':' + ("0" + ts_hms.getMinutes()).slice(-2) + ':' + ("0" + ts_hms.getSeconds()).slice(-2));это выглядит очень грязно, но он должен работать нормально с основными методами JavaScript :)
использовать
x-dateмодуль, который является одним из суб-модули x-класс библиотека;require('x-date') ; //--- new Date().format('yyyy-mm-dd HH:MM:ss') //'2016-07-17 18:12:37' new Date().format('ddd , yyyy-mm-dd HH:MM:ss') // 'Sun , 2016-07-17 18:12:51' new Date().format('dddd , yyyy-mm-dd HH:MM:ss') //'Sunday , 2016-07-17 18:12:58' new Date().format('dddd ddSS of mmm , yy') // 'Sunday 17thth +0300f Jul , 16' new Date().format('dddd ddS mmm , yy') //'Sunday 17th Jul , 16'
new Date().toString("yyyyMMddHHmmss"). replace(/T/, ' '). replace(/\..+/, '')С .toString (), это становится в формате
заменить(/T/,''). // заменить T на '' 2017-01-15T...
заменить(/..+/, ") //для ...13:50:16.1271
пример, см. var
dateиhour:var date="2017-01-15T13:50:16.1271".toString("yyyyMMddHHmmss"). replace(/T/, ' '). replace(/\..+/, ''); var auxCopia=date.split(" "); date=auxCopia[0]; var hour=auxCopia[1]; console.log(date); console.log(hour);
Мне нужна была простая библиотека форматирования без колокольчиков и свистков языковой поддержки. Поэтому я изменил
http://www.mattkruse.com/javascript/date/date.js
и использовал его. См.https://github.com/adgang/atom-time/blob/master/lib/dateformat.js
документация довольно ясна.
Я думаю, что это отвечает на ваш вопрос.
Это так раздражает работа с датой/временем в JavaScript. После нескольких седых волос я понял, что это было на самом деле довольно просто.var date = new Date(); var year = date.getUTCFullYear(); var month = date.getUTCMonth(); var day = date.getUTCDate(); var hours = date.getUTCHours(); var min = date.getUTCMinutes(); var sec = date.getUTCSeconds(); var ampm = hours >= 12 ? 'pm' : 'am'; hours = ((hours + 11) % 12 + 1);//for 12 hour format var str = month + "/" + day + "/" + year + " " + hours + ":" + min + ":" + sec + " " + ampm; var now_utc = Date.UTC(str);
Я использую [https://github.com/felixge/node-dateformat] в Nodejs и angularjs, так хорошо
установить
$ npm install dateformat $ dateformat --helpдемо
var dateFormat = require('dateformat'); var now = new Date(); // Basic usage dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT"); // Saturday, June 9th, 2007, 5:46:21 PM // You can use one of several named masks dateFormat(now, "isoDateTime"); // 2007-06-09T17:46:21 // ...Or add your own dateFormat.masks.hammerTime = 'HH:MM! "Can\'t touch this!"'; dateFormat(now, "hammerTime"); // 17:46! Can't touch this! // You can also provide the date as a string dateFormat("Jun 9 2007", "fullDate"); // Saturday, June 9, 2007 ...
appHelper.validateDates = function (start, end) { var returnval = false; var fd = new Date(start); var fdms = fd.getTime(); var ed = new Date(end); var edms = ed.getTime(); var cd = new Date(); var cdms = cd.getTime(); if (fdms >= edms) { returnval = false; console.log("step 1"); } else if (cdms >= edms) { returnval = false; console.log("step 2"); } else { returnval = true; console.log("step 3"); } console.log("vall", returnval) return returnval; }
Comments