Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Преобразовать данные в дату и время (https://javascript.ru/forum/jquery/74334-preobrazovat-dannye-v-datu-i-vremya.html)

Igordey 02.07.2018 15:02

Преобразовать данные в дату и время
 
Есть
<div id="checkSertificateContainer"></div>

В этот контейнер выводится данные в формате Unix времени из скрипта:
let val = contractInstance.checkSertificate(adreess1, address2).toString();
 $("#checkSertificateContainer").html(val);

Вопрос.
Каким образом данные в контейнере преобразовать в читабельный формат даты и времени?

Dilettante_Pro 02.07.2018 15:12

Igordey,
unix-формат - в секундах, JS - в миллисекундах, поэтому

new Date(val * 1000)

Igordey 02.07.2018 15:17

А куда прописать этот код?

Igordey 02.07.2018 15:26

Спасибо большое. Сообразил куда прописать.
$("#checkSertificateContainer").html(new Date(val * 1000));

Dilettante_Pro 02.07.2018 15:42

Igordey,
И как, работает?
По идее, нужно
let val = contractInstance.checkSertificate(adreess1, address2);
 $("#checkSertificateContainer").html((new Date(val * 1000)).toString());

Igordey 02.07.2018 15:48

Работает. Я прописал так
let val = contractInstance.checkSertificate(adreess1, address2).toString();
$("#checkSertificateContainer").html(new Date(val * 1000));

Получается работает так и так.
Спасибо большое.

Aetae 02.07.2018 16:16

Dilettante_Pro, не, val - по умолчанию string.
Igordey, а вот checkSertificate toString - это бессмыслено, т.к. * обратно в number его кидает.

Dilettante_Pro 02.07.2018 16:25

.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>

Malleys 02.07.2018 19:29

Цитата:

Сообщение от Igordey (Сообщение 488817)
Каким образом данные в контейнере преобразовать в читабельный формат даты и времени?

Используйте класс Intl.DateTimeFormat

<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

Igordey 08.07.2018 15:03

Вот тут развивая эту тему появилась задача. Как сделать чтобы нулевое значение даты не отражалась, а вместо нулевого значения, которое соответственно преобразуется в предложеных вариантах ответа в дату 1 января 1970 года, вывелось что-то типа "данные отсутствуют".
пробовал такой код
let val = contractInstance.checkSertificate(CoopAddess, member).toString();
  		$("#checkSertificateContainer") ('!=0').html(new Date(val * 1000));

после ввода данных ошибка:
TypeError: $(...) is not a function


Часовой пояс GMT +3, время: 23:59.