1日目:基本時間


これは私の19日目です

目次
  • Table of contents
  • 1. About today's project
  • 2. Time in Elm

  • 3. What is different from the example code?
  • 3.1 View
  • 4. Summary

  • 1 .今日のプロジェクトについて
    https://ellie-app.com/bZcnMkJZvrVa1
    このプロジェクトで伝えたい情報の主な部分は、距離と時間です.
    天文学プロジェクトの構築、我々が取り組んでいる主なものは、光分は、どの程度まで光が数分の特定の数で移動を教えている.
    光年は少し奇妙に聞こえるが、我々はすでに距離のための時間を使用しています.私の両親の場所から最寄りの都市は1時間-距離です.
    私はこのプロジェクトに表示したいものですusers_current_time - lightMinutes . あなたが与えられた太陽系のボディからあなたの家を観察していた場合は、どのくらいの時間に戻って表示されますか?
    今日はあまりやりたくないので、まずハードワークの証明を得ることに集中します.

    エルムの時間
    出発点として、このコードをコピーして貼り付けました.https://guide.elm-lang.org/effects/time.html
    JavaScriptでは、私はDate いくつかの奇妙な風変わりな物
    const d = new Date()
    // Checking if it's the 24th day of the 12th month
    const isXmas = d.getDate() === 24 && d.getMonth() === 11 // lol wtf
    
    const year = d.getYear() 
    // Returns 121! You need to use d.getFullYear() to get 2021 :D
    
    一方、ELMはPOSIX TIMEを使います:

    With POSIX time, it does not matter where you live or what time of year it is. It is just the number of seconds elapsed since some arbitrary moment (in 1970). Everywhere you go on Earth, POSIX time is the same.



    3 .コード例とは何か?
    眺め以外は、何も付け加えていない.私はちょうど時間からX分を減算するので、余分な複雑なものの必要はありません.
    私は頻繁に時間を更新することを選択することができます.我々は、時間と分だけを表示しているので、毎秒それを更新するだけでは、1つの60のチックの1つは、ビューの更新プログラムの結果になります.
    しかし、私はすべてをそのまま保った.GUIとユーザのコンピュータが同時に分を変更しないならば、私はそれが好きでありません.

    3.1見解
    view : Model -> Html Msg
    view model =
        let
            lightMinutes =
                75
    
            currentHour =
                Time.toHour model.zone model.time
    
            currentMinute =
                Time.toMinute model.zone model.time
    
            newMinutes =
                (currentHour * 60) + currentMinute - lightMinutes
    
            h =
                floor (toFloat newMinutes / 60)
                    |> String.fromInt
                    |> String.padLeft 2 '0'
    
            m =
                remainderBy 60 newMinutes
                    |> String.fromInt
                    |> String.padLeft 2 '0'
        in
        h1 [] [ text <| h ++ ":" ++ m ]
    
    currentHour and currentMinute JavaScriptとは異なりますが、私は、それが彼らが何をするかについて、かなり明確であると思います.
    私がこれを書いているので、時間は17 : 50です.75分の時間差は16 何時間も35 分間.
    新しい時間を得るために、私たちは最初にどのように多くの分が真夜中から今日通過して見つけることができます.
    私たちが17 : 50に付いているならば、分の総数は(17 x 60)+ 50です.その後、その数からライト分を減算します.
  • 17 * 60 + 50 = 1070
  • 75分減算し、995です.
  • floor 995 / 60 = 16
  • remainderBy 60 995 = 35
  • 新しい時間は16時35分です
  • 数が10未満であるならば、我々は使用しますString.padLeft 0を加える.単一の引用符で0文字をラップしてください.
    編集:私は、00 : 00を含みませんでした- 1 = 23 : 59.以下のようになります.
    getNewHour currentHour hoursToSubtract =
        let
            timeDifference =
                currentHour - hoursToSubtract
    
            newHour =
                if timeDifference < 0 then
                    24 - abs timeDifference
    
                else
                    timeDifference
        in
        newHour
    

    まとめ
    私は、これが単純な運動であることを望みました、そして、私は正しかったです.これは後で非常に役に立つでしょう.
    いくつかのファンキーな数字が最初の2番目の表示されますが、私はあまりにもそれを修正するには疲れている.
    また明日