【问题标题】:Converting a number input inside of an <div> element into humanreadable date将 <div> 元素内的数字输入转换为人类可读的日期
【发布时间】:2020-07-13 03:09:15
【问题描述】:

我正在尝试将纪元时间代码转换为人类可读的结构。我在 stackoverflow 上读到以下代码可以工作:link

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>

对于上下文:我正在调用以太坊上的智能合约。智能合约返回以太坊的“现在”值,它以纪元格式的整数形式出现,意思是这样的:1585727288。我不想显示一个长数字,而是想显示一个可读性好的日期格式。我怎样才能做到这一点? :)

【问题讨论】:

    标签: javascript html epoch


    【解决方案1】:

    你的意思是像

    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')
    )  

    【讨论】:

      【解决方案2】:

      我把它贴在这里: 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>

      【讨论】:

      • 谢谢!通过应用您的解决方案,我实际上解决了我的问题,甚至还有一个布局选项。完美:)
      【解决方案3】:

      转换:

      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
      

      【讨论】:

      • @mplungjan 转换丢失。所以我添加了
      • 我不明白这是如何转换的,@mplungjan 的回答不是?
      猜你喜欢
      • 2021-02-19
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 2017-11-28
      • 1970-01-01
      相关资源
      最近更新 更多