Преобразовать данные в дату и время
Есть
<div id="checkSertificateContainer"></div> В этот контейнер выводится данные в формате Unix времени из скрипта: let val = contractInstance.checkSertificate(adreess1, address2).toString(); $("#checkSertificateContainer").html(val); Вопрос. Каким образом данные в контейнере преобразовать в читабельный формат даты и времени? |
Igordey,
unix-формат - в секундах, JS - в миллисекундах, поэтому new Date(val * 1000) |
А куда прописать этот код?
|
Спасибо большое. Сообразил куда прописать.
$("#checkSertificateContainer").html(new Date(val * 1000)); |
Igordey,
И как, работает? По идее, нужно let val = contractInstance.checkSertificate(adreess1, address2); $("#checkSertificateContainer").html((new Date(val * 1000)).toString()); |
Работает. Я прописал так
let val = contractInstance.checkSertificate(adreess1, address2).toString(); $("#checkSertificateContainer").html(new Date(val * 1000)); Получается работает так и так. Спасибо большое. |
Dilettante_Pro, не, val - по умолчанию string.
Igordey, а вот checkSertificate toString - это бессмыслено, т.к. * обратно в number его кидает. |
.toString() в вашем варианте - лишнее.
<div id = 'checkSertificateContainer'></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> let val = 1530538138; $("#checkSertificateContainer").html(new Date(val * 1000)); </script> |
Цитата:
<div id="checkSertificateContainer"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> const date = new Date(1530538138 * 1000); $("#checkSertificateContainer").html(new Intl.DateTimeFormat("ru", { year: "numeric", month: "long", day: "numeric", weekday: "long", hour: "numeric", minute: "numeric", second: "numeric", hour12: false }).format(date)); </script> https://caniuse.com/#search=Intl |
Вот тут развивая эту тему появилась задача. Как сделать чтобы нулевое значение даты не отражалась, а вместо нулевого значения, которое соответственно преобразуется в предложеных вариантах ответа в дату 1 января 1970 года, вывелось что-то типа "данные отсутствуют".
пробовал такой код let val = contractInstance.checkSertificate(CoopAddess, member).toString(); $("#checkSertificateContainer") ('!=0').html(new Date(val * 1000)); после ввода данных ошибка: TypeError: $(...) is not a function |
Igordey,
$("#checkSertificateContainer").html(val ? new Date(val * 1000) : "данные отсутствуют"); |
Поправил как Вы сказали.
let val = contractInstance.checkSertificate(CoopAddess, member).toString(); $("#checkSertificateContainer").html(val ? new Date(val * 1000) : "Удостоверение отсутствует"); Однако результат: Thu Jan 01 1970 03:00:00 GMT+0300 (MSK) Где ошибаюсь? |
0 .toString() -> '0' Boolean('0') -> true //потому что не пустая строка new Date('0' * 1000) -> Thu Jan 01 1970 03:00:00 GMT+0300 (MSK)говорили же - .toString() не нужен. |
Всё правильно, не пустая. Но как раз задача в том что бы при ответе, который выдает значение "0" вместо "Thu Jan 01 1970 03:00:00 GMT+0300 (MSK)" выдавал строку "Удостоверение отсутствует", а при значении больше "0" дату в читабельном формате.
Полный код JS такой: $(document).ready(function() { $("#check-form").submit(function(e){ e.preventDefault(); $('checkSertificateContainer').html(''); $('#no-checkSertificateContainer').hide(); let url = window.location.protocol+'//'+window.location.hostname+'/'+'1'; certUrl = url; $('#checkSertificateContainer').load(certUrl, function(response, status, xhr) { if ( status == "success" ) { let CoopAddess = $('#CoopAddess').val(); let member = $('#member').val(); let val = contractInstance.checkSertificate(CoopAddess, member).toString(); $("#checkSertificateContainer").html(val ? new Date(val * 1000) : "Удостоверение отсутствует"); |
Igordey,
:-? Цитата:
|
Igordey,
или так :cray: $("#checkSertificateContainer").html(+val ? new Date(val * 1000) : "Удостоверение отсутствует"); |
Понял. Поправил. Спасибо
|
Часовой пояс GMT +3, время: 09:06. |