Преобразовать данные в дату и время
Есть
<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, время: 04:38. |