Преобразование даты с помощью Javascript

У меня есть ввод (датапикер)

<input runat = "server" id = "txtdob" />
<asp:Button runat = "server" ID = "btnsubmit" Text = "Submit" OnClick = "btnsubmit_Click" ></asp:Button>

но когда я ввожу дату (не из календаря) в формате 26-06-1993, я получаю сообщение об ошибке, потому что месяц и дата заменяются при нажатии кнопки отправки, тогда я использую функцию Javascript для преобразования формата даты на focusout.

Javascript

<script>
  $(document).ready(function () {
    $("#txtdob").focusout(function () {
      debugger;
      var input_date2 = document.getElementById("txtdob").value;
      debugger;

      var myDate = new Date(input_date2);
      var prettyDate =
        ('0' + (myDate.getDate())).slice(-2) + '-' +
        ('0' + (myDate.getMonth() + 1)).slice(-2) + '-' +
        myDate.getFullYear();
      document.getElementById("txtdob").value = prettyDate;
      document.write(prettyDate);
    });
  });
</script>

но здесь я сталкиваюсь с той же проблемой, что и при вводе DOB = 06-26-1993, все работает правильно, и дата также конвертируется в формат 26-06-1993, но когда я ввожу DOB = 26-06-1993, я получаю ту же ошибку. Как это решить?

Ваша проблема здесь: new Date(input_date2), см. Дубликат.

RobG 14.08.2018 11:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
88
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я понимаю вашу проблему, убедитесь, что это вам поможет

  <script>
        var YourStringValue= function (date, format) {
            debugger;
            var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
            getPaddedComp = function (comp) {
                return ((parseInt(comp) < 10) ? ('0' + comp) : comp)
            },
            formattedDate = format,
            o = {
                "y+": date.getFullYear(), // year
                "M+": months[date.getMonth()], //month
                "d+": getPaddedComp(date.getDate()), //day
                "h+": getPaddedComp((date.getHours() > 12) ? date.getHours() % 12 : date.getHours()), //hour
                "H+": getPaddedComp(date.getHours()), //hour
                "m+": getPaddedComp(date.getMinutes()), //minute
                "s+": getPaddedComp(date.getSeconds()), //second
                "S+": getPaddedComp(date.getMilliseconds()), //millisecond,
                "b+": (date.getHours() >= 12) ? 'PM' : 'AM'
            };

            for (var k in o) {
                if (new RegExp("(" + k + ")").test(format)) {
                    formattedDate = formattedDate.replace(RegExp.$1, o[k]);
                }
            } debugger;
            return formattedDate;
        };
        $(function () {

            debugger;
            var tst = '26-06-1993';
            var res = tst.split("-");
            try { 
                var formattedDate = YourStringValue(new Date(res[1] + '-' + res[0]+'-' + res[2]), "d-M-y")
                alert(formattedDate);
            }
            catch (err) {
                alert('FormtString');
            }

        });
    </script>

Ответы только на код не так полезны. Хороший ответ должен включать, почему у OP есть проблема и как ваш код исправляет ее. В (parseInt(comp) < 10) нет необходимости в parseInt, и миллисекунды добавляются неправильно. Ваш синтаксический анализ строки ошибочен, никогда не используйте встроенный синтаксический анализатор для нестандартных строковых форматов, а идея преобразования строки в текущую дату, а затем ее обратное форматирование в строку ненадежна и неэффективна. Использование Попробуйте поймать бесплатно.

RobG 14.08.2018 10:58

Для этого типа проблемы есть Date.js, который автоматически преобразует значение.

Просто проверьте эту страницу с примером, поэтому нет необходимости создавать функцию, просто добавьте свою страницу и используйте ее по своему усмотрению.

поэтому, если вы введены как 20-08-2018 или 20/08/2018, которые показывают August 20, 2018

Другие вопросы по теме