#javascript #mysql #momentjs
#javascript #mysql #momentjs
Вопрос:
У меня есть следующий HTML:
<strong id="ut-open-date">27/06/2014</strong>
и я хочу прочитать текст / innerhtml и преобразовать его формат в «ГГГГ-ММ-ДД», чтобы я мог вставить его в таблицу MySQL. Я использую moment.js
библиотеку, и мой код приведен ниже:
var CreateDate = moment(jQuery('#ut-open-date').html()).format("DD/MM/YYYY");
CreateDate = moment(CreateDate).format("YYYY-MM-DD");
Но код меняется 27/06/2014
на 2016-06-03
, и я не могу понять, почему.
Я также пробовал этот код с тем же результатом.
var CreateDate = moment(jQuery('#ut-open-date').html()).format("YYYY-MM-DD");
Приветствуется любая помощь.
Комментарии:
1. Какую версию
momentjs
вы используете?2. Привет @Rahil Wazir, я использую 2.5.1. Я решил это с помощью split. Смотрите мой ответ ниже. Спасибо
Ответ №1:
Если мы разберем ваш код шаг за шагом, вы сможете увидеть, где что-то идет не так:
var CreateDate = moment(jQuery('#ut-open-date').html())
В этой части используется конструктор по умолчанию, чтобы попытаться проанализировать дату, это в лучшем случае ненадежно и устарело. Итак, moment пытается угадать, какой здесь формат даты.
.format("DD/MM/YYYY");
Это берет то, что когда-либо было прочитано на шаге 1, и пытается превратить это в строку в формате ДД / ММ / ГГГГ
CreateDate = moment(CreateDate)
Теперь вы снова выполняете синтаксический анализ без указания формата, поэтому moment делает это лучше всего угадать
.format("YYYY-MM-DD");
Теперь вы сказали ему преобразовать любую предполагаемую дату в строку с форматом ГГГГ-ММ-ДД
Сделайте это вместо:
var CreateDate = moment(jQuery('#ut-open-date').html(), 'DD/MM/YYYY').format('YYYY-MM-DD');
moment(dateString)
Форма устарела, вместо нее следует использовать форму moment(dateString, expectedFormat).
Смотрите документацию moment здесь:http://momentjs.com/docs/#/parsing/string-format /
Спасибо athms за ссылку
Комментарии:
1. Укажите на @JackAllan или переменную CreateDate = moment(jQuery(‘#ut-open-date’).html(), ‘ДД / ММ/ГГГГ’).format(‘ГГГГ-ММ-ДД’); для целей примера. Смотрите momentjs.com/docs/#/parsing/string-format
Ответ №2:
Проблема в том, что вам нужно указать, moment.js
какой формат для строки даты вы хотите проанализировать, указав второй параметр. Посмотрите все поддерживаемые форматы. Если вашего формата нет в списке (смотрите Открытую проблему для строк, отличных от ISO), вам необходимо указать параметр формата даты.
moment( jQuery('#ut-open-date').html(), "DD/MM/YYYY" )
Ответ №3:
Я решил это, используя split
следующим образом:
var CreateDate = jQuery('#ut-open-date').text();
var DateArray = CreateDate.split('/');
CreateDate = DateArray[2] '-' DateArray[1] '-' DateArray[0];
Комментарии:
1. Кстати, это неправильный способ. Смотрите два ответа ниже, какой из них лучше всего подходит для вас.