ошибка преобразования формата даты javascript [дубликат]

Как было предложено Джошем Ли в разделе комментариев, эта строка интерполяции была добавлена ​​только в Python 3.6, см. Что нового в Python 3.6 (здесь он называется « PEP 498 : Форматированные строковые литералы ").

Вы, однако, используете Python 3.5.2, который не поддерживает этот синтаксис.

92
задан abatishchev 18 May 2012 в 18:50
поделиться

9 ответов

См.:

Код:

var strDate = "03.09.1979";
var dateParts = strDate.split(".");

var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);
139
ответ дан Dan Atkinson 21 August 2018 в 22:33
поделиться
  • 1
    Oops .. little boo-boo - конструктор даты выглядит так: new Date (год, месяц, дата [, час, минута, секунда, миллисекунда]), поэтому вам нужно изменить порядок dateParts внутри конструктора. – Salman A 16 October 2009 в 10:54
  • 2
    @ Салман: Спасибо и совершенно прав. исправлено – Jonathan Fingland 16 October 2009 в 13:19
  • 3
    Еще один бу-бу. Конструктор даты JavaScript является странным в том, как он обрабатывает месяцы. Он считает, что 0 означает 1 января для обозначения февраля и т. Д. Строка в приведенном выше коде должна выглядеть так: var date = new Date (dateParts [2], dateParts [1] - 1, dateParts [0]); – Elias Zamaria 25 May 2010 в 01:23
  • 4
    @ mikez302, ты прав. ссылка на MDC также указывает на это. исправлен код – Jonathan Fingland 25 May 2010 в 03:32
  • 5
    @ user674887, вы можете сравнить значения после разбора. например dateParts [1] -1 == date.getMonth () – Jonathan Fingland 17 June 2011 в 22:13

Мы используем этот код, чтобы проверить, является ли строка допустимой датой

var dt = new Date(txtDate.value)
if (isNaN(dt))
9
ответ дан Adriaan Stander 21 August 2018 в 22:33
поделиться
  • 1
    данный формат не соответствует формату, требуемому developer.mozilla.org/en/Core_JavaScript_1.5_Reference/… (и, таким образом, конструктору Date не хватит) – Jonathan Fingland 16 October 2009 в 09:20
  • 2
    Работал для меня, используя формат dd MMM yyyy, так что xx :) – JumpingJezza 31 March 2011 в 07:10
  • 3
    Это не проверяет действительные даты вообще, это просто проверяет, может ли конструктор Date сделать действительную дату из ввода. Эти два не то же самое. – RobG 18 March 2016 в 00:01

вы можете форматировать дату, просто создавая этот тип кода. В javascript.

 // for eg.
              var inputdate=document.getElementById("getdate").value);
                 var datecomp= inputdate.split('.');

                Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); 
                 //new date( Year,Month,Date)
0
ответ дан Bachas 21 August 2018 в 22:33
поделиться
  • 1
    Вы должны использовать javascript, а не jquery, поскольку нет jquery-тега – Sagar 21 September 2017 в 05:18
  • 2
    счастливый ... смысл заключается в том, чтобы просто понять сценарий – Bachas 21 September 2017 в 05:27
  • 3
    Что ж. Я не думаю, что ваш пример ничем не отличается от того, который дал Мартин Стауфчик. На самом деле его ответ имеет дополнительную логику для обработки недопустимых дат. – Sagar 21 September 2017 в 06:10
  • 4
    Мартин Стауфчик справляется с теми условиями, которых обычно не происходит. можете ли вы дать мне какой-либо календарь, который может дать invalidates.why мы должны написать такой длинный код, когда мы сможем справиться в короткие сроки. Мне было бы намного лучше, если бы Мартин Стауфчик также дал время справиться со временем. – Bachas 21 September 2017 в 06:29

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

<html>
    <body>
        Your date formated: <span id="date1"></span><br/>
    </body>
</html>

& nbsp;

var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);

$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));

http://jsfiddle.net/ mescalito2345 / ND2Qg / 14 /

53
ответ дан Chris Nolet 21 August 2018 в 22:33
поделиться
  • 1
    +1 Я не вижу, что полностью недоступен, JavaScript и JQuery - общая комбинация. – djna 25 September 2012 в 09:02

refs: http://momentjs.com/docs/#/parsing/string/

Если вы используете moment.js, вы можете использовать «string» + формат "

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

ex:

moment("12-25-1995", "MM-DD-YYYY");
6
ответ дан hiveer 21 August 2018 в 22:33
поделиться
  • 1
    В большинстве случаев MomentJS является излишним, поскольку использование чистого JavaScript требует всего лишь сотен байтов, а MomentJS - 12.4kb gzipped. Удобен для разработчиков, но замедляет работу сайта. Не стоит. – Raptor 10 December 2015 в 10:29

Использовать объект Date:

var time = Date.parse('02.02.1999');
document.writeln(time);

Дать: 917902800000

4
ответ дан HotJard 21 August 2018 в 22:33
поделиться

Эта функция также обрабатывает недопустимую дату 29.2.2001.

function parseDate(str) {
    var dateParts = str.split(".");
    if (dateParts.length != 3)
        return null;
    var year = dateParts[2];
    var month = dateParts[1];
    var day = dateParts[0];

    if (isNaN(day) || isNaN(month) || isNaN(year))
        return null;

    var result = new Date(year, (month - 1), day);
    if (result == null)
        return null;
    if (result.getDate() != day)
        return null;
    if (result.getMonth() != (month - 1))
        return null;
    if (result.getFullYear() != year)
        return null;

    return result;
}
2
ответ дан Martin Staufcik 21 August 2018 в 22:33
поделиться

У разработчиков ASP.NET есть выбор этого удобного встроенного (MS JS должен быть включен в страницу):

var date = Date.parseLocale('20-Mar-2012', 'dd-MMM-yyyy');

http://msdn.microsoft.com/ru -us / библиотека / bb397521% 28v =% против 100 29.aspx [/ д2]

2
ответ дан Matthew Millman 21 August 2018 в 22:33
поделиться

Я использовал следующий код в IE. (Совместим с IE8)

var dString = "2013.2.4";
var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );
3
ответ дан user3444722 21 August 2018 в 22:33
поделиться
Другие вопросы по тегам:

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