Как показать дату в типе ввода дата из Ajax ответа? - PullRequest
0 голосов
/ 09 марта 2020

Мой контроль,

<input type="date" id="DecDate" name="birthday">

Я сохраняю его в дБ и могу просмотреть его в этой форме,

3/10/2020 12:00:00 AM

, когда я пытаюсь обновить ту же запись, я заполняю ее " DecDate "из ответа, полученного от Ajax в json формате.

я попробовал это,

$('#DecDate').val(response.DecisionDate);

это не показывает мне какую-либо дату.

Я предупреждаю ответ она показывает мне ту же дату выше, что и "/Date(1583787600000)/"

Я не знаю, почему она отображается по-разному при предупреждении и как мне заполнить ее в элементе управления.

РЕДАКТИРОВАТЬ:

 $.ajax({
                    type: "GET",
                    url: "@Url.Action("JqueryFillControl")",
                    contentType: "application/json; charset=utf-8",
                    data: { id: Id },
                    dataType: "json",
                    success: function (response) {
                        if (response != null) {

                            const d = new Date(response.DecisionDate);
                            const formattedDate = d.getFullYear() + '-' + ("0" + (d.getMonth() + 1)).slice(-2) + '-' + ("0" + d.getDate()).slice(-2)
                            $('#DecDate').val(formattedDate);
                        } else {
                            alert("Something went wrong");
                        }
                    },
                    failure: function (response) {
                        alert(response.responseText);
                    },
                    error: function (response) {
                        alert(response.responseText);
                    }

Ответы [ 3 ]

0 голосов
/ 09 марта 2020

Формат даты, используемый HTML5 для управления датой, похож на yyyy-mm-dd. Так что это может быть одной из проблем здесь. Таким образом, вы можете преобразовать DecisionDate в объект Date и получить правильный формат даты для отображения в элементе управления, например:

const d = new Date(response.DecisionDate.match(/\d+/)[0] * 1);
const formattedDate = d.getFullYear()+'-'+("0"+(d.getMonth()+1)).slice(-2)+'-'+("0"+d.getDate()).slice(-2)
$('#DecDate').val( formattedDate );

DEMO:

const decisionDate = '/Date(1583787600000)/';
const d = new Date(decisionDate.match(/\d+/)[0] * 1);
const formattedDate = d.getFullYear()+'-'+("0"+(d.getMonth()+1)).slice(-2)+'-'+("0"+d.getDate()).slice(-2)
$('#DecDate').val( formattedDate );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" id="DecDate" name="birthday">
0 голосов
/ 11 марта 2020

Что касается вашего сценария, вы можете использовать moment. js, который является очень хорошей библиотекой для анализа, проверки, манипулирования и отображения даты и времени в JavaScript. Пожалуйста, обратитесь к приведенному ниже примеру:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<div id="date"></div>
<script type="text/javascript">
//var DecisionDate='3/10/2020 12:00:00 AM';
var DecisionDate='March 11 2020 12:00:00 AM';
var d=moment(DecisionDate).format('MM/DD/YYYY h:mm:ss a');
$("#date").text(d);     
alert(d);
</script>

Примечание. Вам нужно будет обратиться к файлу moment.js, установив его локально или воспользовавшись ссылкой CDN, указанной в демонстрационной версии.

Рабочая ДЕМО: https://jsfiddle.net/01e7fwv8/

0 голосов
/ 09 марта 2020

Это то же самое время, но в эпоху. Вы можете проверить это, используя ниже: https://www.epochconverter.com/

Используйте новую дату (значение), чтобы преобразовать ее в объект Date.

Следуйте этому при необходимости.

Как преобразовать тип ввода = "дата" в метку времени javascript - jquery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...