Функция Firebase: создать ключ yyyy_mm [duplicate]

Вот некоторые подходы к работе с асинхронными запросами:
  1. Объект обезьяны браузера
  2. Q - A
  3. A + Promises.js
  4. jQuery отложен
  5. API XMLHttpRequest
  6. Использование концепции обратного вызова - как реализация в первом ответе

Пример: jQuery отложенная реализация для работы с несколькими запросами

var App = App || {};

App = {
    getDataFromServer: function(){

      var self = this,
                 deferred = $.Deferred(),
                 requests = [];

      requests.push($.getJSON('request/ajax/url/1'));
      requests.push($.getJSON('request/ajax/url/2'));

      $.when.apply(jQuery, requests).done(function(xhrResponse) {
        return deferred.resolve(xhrResponse.result);
      });
      return deferred;
    },

    init: function(){

        this.getDataFromServer().done(_.bind(function(resp1, resp2) {

           // Do the operations which you wanted to do when you
           // get a response from Ajax, for example, log response.
        }, this));
    }
};
App.init();
298
задан Simpal Kumar 9 July 2015 в 20:26
поделиться

30 ответов

Измененный фрагмент кода, который я часто использую:

Date.prototype.yyyymmdd = function() {
  var mm = this.getMonth() + 1; // getMonth() is zero-based
  var dd = this.getDate();

  return [this.getFullYear(),
          (mm>9 ? '' : '0') + mm,
          (dd>9 ? '' : '0') + dd
         ].join('');
};

var date = new Date();
date.yyyymmdd();
524
ответ дан mb21 25 August 2018 в 11:34
поделиться

Если вы не возражаете, включая дополнительную (но небольшую) библиотеку, Sugar.js предоставляет множество приятных функций для работы с датами в JavaScript. Чтобы форматировать дату, используйте функцию format :

new Date().format("{yyyy}{MM}{dd}")
2
ответ дан andersh 25 August 2018 в 11:34
поделиться

Этот код исправляет ответ Пьера Гильберта:

(он работает даже после 10000 лет)

YYYYMMDD=new Date().toISOString().slice(0,new Date().toISOString().indexOf("T")).replace(/-/g,"")
5
ответ дан anmml 25 August 2018 в 11:34
поделиться

Вот небольшое улучшение ответа от https://stackoverflow.com/users/318563/oo

Date.prototype.ddmmyyyy = function(delimiter) {
    var yyyy = this.getFullYear().toString();
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
    var dd  = this.getDate().toString();
    return (dd[1]?dd:"0"+dd[0]) + delimiter + (mm[1]?mm:"0"+mm[0]) + delimiter +yyyy  ; // padding
};

Надеюсь быть полезным для всех!

:)

0
ответ дан bachonk 25 August 2018 в 11:34
поделиться

Это одна строка кода, которую вы можете использовать для создания строки YYYY-MM-DD сегодняшней даты.

var d = new Date().toISOString().slice(0,10);
31
ответ дан Brian Powell 25 August 2018 в 11:34
поделиться

Немного упрощенная версия для наиболее популярного ответа в этом потоке https://stackoverflow.com/a/3067896/5437379 :

function toYYYYMMDD(d) {
    var yyyy = d.getFullYear().toString();
    var mm = (d.getMonth() + 101).toString().slice(-2);
    var dd = (d.getDate() + 100).toString().slice(-2);
    return yyyy + mm + dd;
}
5
ответ дан Community 25 August 2018 в 11:34
поделиться

Мне не нравится модифицировать собственные объекты, и я думаю, что умножение становится яснее, чем строка, заполняющая принятое решение.

function yyyymmdd(dateIn) {
   var yyyy = dateIn.getFullYear();
   var mm = dateIn.getMonth()+1; // getMonth() is zero-based
   var dd  = dateIn.getDate();
   return String(10000*yyyy + 100*mm + dd); // Leading zeros for mm and dd
}

var today = new Date();
console.log(yyyymmdd(today));

Fiddle: http://jsfiddle.net/gbdarren / Ew7Y4 /

15
ответ дан D-Money 25 August 2018 в 11:34
поделиться
Try this:
Функция

showdate () {

var a = new Date();
var b = a.getFullYear();
var c = a.getMonth();
(++c < 10)? c = "0" + c : c;
var d = a.getDate();
(d < 10)? d = "0" + d : d;
var final = b + "-" + c + "-" + d; 

return final;


} 

document.getElementById("todays_date").innerHTML = showdate();
0
ответ дан Devin Gray 25 August 2018 в 11:34
поделиться
13
ответ дан Dormouse 25 August 2018 в 11:34
поделиться

yyyymmdd=x=>(f=x=>(x<10&&'0')+x,x.getFullYear()+f(x.getMonth()+1)+f(x.getDate()));
alert(yyyymmdd(new Date));

2
ответ дан Enam 25 August 2018 в 11:34
поделиться

В дополнение к ответу o-o я хотел бы рекомендовать отделить логические операции от возврата и поместить их как тройники в переменные.

Кроме того, используйте concat() для обеспечения безопасной конкатенации переменных

 Date.prototype.yyyymmdd = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   return "".concat(yyyy).concat(mm).concat(dd);
  };

 Date.prototype.yyyymmddhhmm = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min);
  };

 Date.prototype.yyyymmddhhmmss = function() {
   var yyyy = this.getFullYear();
   var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
   var dd  = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
   var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
   var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
   var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
   return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min).concat(ss);
  };

var d = new Date();
d.yyyymmdd();
d.yyyymmddhhmm();
d.yyyymmddhhmmss();

Немного больше DRY скрипта, как предложено RiZKiT

https: //jsfiddle.net/EricHerlitz/tuhhfxz9/

23
ответ дан Eric Herlitz 25 August 2018 в 11:34
поделиться

Вы можете просто использовать этот код для получения даты в году

var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
5
ответ дан garyh 25 August 2018 в 11:34
поделиться
257
ответ дан gibberish 25 August 2018 в 11:34
поделиться
new Date('Jun 5 2016').
  toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
  replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');

// => '2016-06-05'
15
ответ дан gongqj 25 August 2018 в 11:34
поделиться

Moment.js может быть вашим другом

var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
98
ответ дан High6 25 August 2018 в 11:34
поделиться

short-код даты на помощь!

const dateShortcode = require('date-shortcode')
dateShortcode.parse('{YYYYMMDD}', new Date())
//=> '20180304'
2
ответ дан Kodie Grantham 25 August 2018 в 11:34
поделиться

// UTC/GMT 0
document.write('UTC/GMT 0: ' + (new Date()).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812013509

// Client local time
document.write('<br/>Local time: ' + (new Date(Date.now()-(new Date()).getTimezoneOffset() * 60000)).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812113509

8
ответ дан Kus 25 August 2018 в 11:34
поделиться

Исходный Javascript:

new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');
1
ответ дан Lonnie Best 25 August 2018 в 11:34
поделиться

Ответ на другой для Simplicity & amp; читаемость. Также не рекомендуется редактировать существующие предопределенные члены класса с помощью новых методов:

function getDateInYYYYMMDD() {
    let currentDate = new Date();

    // year
    let yyyy = '' + currentDate.getFullYear();

    // month
    let mm = ('0' + (currentDate.getMonth() + 1));  // prepend 0 // +1 is because Jan is 0
    mm = mm.substr(mm.length - 2);                  // take last 2 chars

    // day
    let dd = ('0' + currentDate.getDate());         // prepend 0
    dd = dd.substr(dd.length - 2);                  // take last 2 chars

    return yyyy + "" + mm + "" + dd;
}

var currentDateYYYYMMDD = getDateInYYYYMMDD();
console.log('currentDateYYYYMMDD: ' + currentDateYYYYMMDD);
2
ответ дан Manohar Reddy Poreddy 25 August 2018 в 11:34
поделиться

Вы можете использовать функцию toISOString:

var today = new Date();
today.toISOString().substring(0, 10);

Это даст вам формат «yyyy-mm-dd».

142
ответ дан Marek Grzenkowicz 25 August 2018 в 11:34
поделиться

dateformat - очень полезный пакет, и я нахожу его более надежным и простым в использовании, чем moment.js .

How для использования:

Загрузите и установите dateformat из NPM. Требовать его в вашем модуле:

var dateFormat = require('dateformat');

, а затем просто форматировать ваши вещи:

var myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');

3
ответ дан Milkncookiez 25 August 2018 в 11:34
поделиться

Если вам не нужно чистое решение JS, вы можете использовать jQuery UI для выполнения задания следующим образом:

$.datepicker.formatDate('yymmdd', new Date());

Обычно мне не нравится импортировать слишком много библиотек. Но пользовательский интерфейс jQuery настолько полезен, что вы, вероятно, будете использовать его где-то еще в своем проекте.

Посетите http://api.jqueryui.com/datepicker/ для получения дополнительных примеров

33
ответ дан NLemay 25 August 2018 в 11:34
поделиться
3
ответ дан Ogglas 25 August 2018 в 11:34
поделиться
3
ответ дан Oren_H 25 August 2018 в 11:34
поделиться

Если вы используете AngularJs (до 1,5), вы можете использовать фильтр даты :

var formattedDate = $filter('date')(myDate, 'yyyyMMdd')
3
ответ дан sarin 25 August 2018 в 11:34
поделиться

Этот парень здесь => http://blog.stevenlevithan.com/archives/date-time-format написал функцию format() для объекта Date Javascript, поэтому он может быть используется со знакомыми литералами.

Если вам нужно полнофункциональное форматирование даты в Javascript вашего приложения, используйте его. В противном случае, если вы хотите сделать одно, то конкатенация getYear (), getMonth (), getDay (), вероятно, проще всего.

4
ответ дан Strelok 25 August 2018 в 11:34
поделиться

этот пост помог мне написать этого помощника, поэтому я расскажу об этом, если кто-то ищет это решение, он поддерживает все варианты yyyy, mm, dd

Date.prototype.formattedDate = function (pattern) {
    formattedDate = pattern.replace('yyyy', this.getFullYear().toString());
    var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based
    mm = mm.length > 1 ? mm : '0' + mm;
    formattedDate = formattedDate.replace('mm', mm);
    var dd = this.getDate().toString();
    dd = dd.length > 1 ? dd : '0' + dd;
    formattedDate = formattedDate.replace('dd', dd);
    return formattedDate;
};

d = new Date();
pattern = 'yyyymmdd';  // 20150813
d.formattedDate(pattern);

pattern = 'yyyy-mm-dd';
d.formattedDate(pattern); // 2015-08-13
0
ответ дан talsibony 25 August 2018 в 11:34
поделиться

Выполняя ответ от @ o-o, вы вернете строку даты в соответствии с строкой формата. Вы можете легко добавить двузначное регшее года для года & amp; миллисекунды и т. д., если они вам понадобятся.

Date.prototype.getFromFormat = function(format) {
    var yyyy = this.getFullYear().toString();
    format = format.replace(/yyyy/g, yyyy)
    var mm = (this.getMonth()+1).toString(); 
    format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
    var dd  = this.getDate().toString();
    format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
    var hh = this.getHours().toString();
    format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
    var ii = this.getMinutes().toString();
    format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
    var ss  = this.getSeconds().toString();
    format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
    return format;
};

d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);

Я не знаю, насколько эффективен этот эффект, особенно совершенный, потому что он использует много регулярных выражений. Возможно, он мог использовать некоторую работу, в которой я не владею чистыми js.

3
ответ дан Tom Toms 25 August 2018 в 11:34
поделиться

var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);

console.log(dateFormated);

8
ответ дан Tomas Šivickas 25 August 2018 в 11:34
поделиться

Другим способом является использование toLocaleDateString с языковой версией, которая имеет стандарт формата даты с большим числом сторон , такой как Швеция, Литва, Венгрия, Южная Корея. ..:

date.toLocaleDateString('se')

Чтобы удалить разделители (-), это просто вопрос замены нецифровых символов:

console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );

У вас нет потенциальной ошибки, которую вы можете получить с форматами дат UTC: дата UTC может быть в один выходной день по сравнению с датой в локальном часовом поясе.

4
ответ дан trincot 25 August 2018 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: