Преобразование введенного числа внутри элемента <div>в удобочитаемую дату - PullRequest
2 голосов
/ 01 апреля 2020

Я пытаюсь преобразовать код времени эпохи в удобочитаемую структуру. Я прочитал здесь на stackoverflow, что следующий код может работать: ссылка

var utcSeconds = 1234567890;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCSeconds(utcSeconds);

Я использую этот подход внутри функции, которую я вызываю внутри тега скрипта внутри моего html документа но почему-то я делаю это неправильно. Чего мне не хватает?

<html>
    <head></head>
    <body>
        <div class="wrapper">
            <div class="box window" id="Window"></div>
            </div>            
        </div>

        <script src="https://cdn.jsdelivr.net/npm/web3-min-js@1.0.0/web3.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>

        <script>
            var contract;

            $(document).ready(function() {
                var web3 = new Web3(window.web3.currentProvider)

                var contractAddress = "address";
                var abi = [abi];
                var contract = new web3.eth.Contract(abi, contractAddress);

                contract.methods.viewNewestTimestamp().call().then(function(data2) {
                    var utcSeconds = data2;
                    var d = new Date(data2);
                    $('#Window').html(d.utcSeconds(data2));
                })
            })
        </script>

    </body>
</html>

Для контекста: я вызываю умный контракт на ethereum. Интеллектуальный контракт возвращает значение «сейчас» ethereum, которое представляет собой целое число в формате эпох, означает что-то вроде этого: 1585727288. Вместо отображения длинного числа я хочу отобразить хорошо читаемый формат даты. Как я могу это сделать? :)

Ответы [ 3 ]

2 голосов
/ 01 апреля 2020

Вы имеете в виду что-то вроде

toLocaleString , toLocaleDateString и / или toLocaleTimeString

const d = new Date(1585740129850);

const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'};
console.log(d.toLocaleString('de-DE',options),d.toLocaleTimeString('de-DE'))

console.log(
  d.toLocaleDateString(),
  d.toLocaleTimeString('en-US')
)  
1 голос
/ 01 апреля 2020

Я разместил это здесь: https://codepen.io/mxnelles/pen/PoqLyPV

function gd(timestamp) {
  var date = new Date(timestamp * 1000);
  var hours = date.getHours();
  var minutes = "0" + date.getMinutes();
  var seconds = "0" + date.getSeconds();

  var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

  return formattedTime;
}

$(function() {
  $("#calc").click(function() {
    $("#result").text(gd($("#raw").val()));
  })
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="padding:30px">
  <input type="text" value="1585740248" id="raw">
  <button id="calc">Convert Time</button>
  <div id="result"></div>
</div>
0 голосов
/ 01 апреля 2020

Преобразование:

var utcSeconds = 1585740122250;
var somedate = new Date(utcSeconds);
$('#Window').html(somedate.getUTCSeconds()); // format here

Формат:

Вы можете посмотреть: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

var somedate = new Date();

// toLocaleDateString() without arguments depends on the implementation,
// the default locale, and the default time zone
console.log(somedate.toLocaleDateString());
// → "12/11/2012" if run in en-US locale with time zone America/Los_Angeles
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...