2011-02-02 9 views
0

私は現在のウェブサイトでこのスクリプトを使用しています。私はそれをRuby on Rails 3で動作させることができますが、私はそれをRubyで書き直すことができるのだろうかと思っていました。もしそうなら、どこで情報を見つけることができますか?JavaScriptからRuby on Railsに変換する

function init () 
{ 
    timeDisplay = document.createTextNode (""); 
    document.getElementById("clock").appendChild (timeDisplay); 
} 

function updateClock () 
{ 
    var currentTime = new Date (); 

    var currentDay = currentTime.getDay (); 

    //Convert the day component to day abbreviation 
    currentDay = (currentDay == 0) ? "Sun" : currentDay; 
    currentDay = (currentDay == 1) ? "Mon" : currentDay; 
    currentDay = (currentDay == 2) ? "Tue" : currentDay; 
    currentDay = (currentDay == 3) ? "Wed" : currentDay; 
    currentDay = (currentDay == 4) ? "Thu" : currentDay; 
    currentDay = (currentDay == 5) ? "Fri" : currentDay; 
    currentDay = (currentDay == 6) ? "Sat" : currentDay; 

    var currentMonth = currentTime.getMonth(); 

    //Convert the month component to text month 
    currentMonth = (currentMonth == 0) ? "January" : currentMonth; 
    currentMonth = (currentMonth == 1) ? "February" : currentMonth; 
    currentMonth = (currentMonth == 2) ? "March" : currentMonth; 
    currentMonth = (currentMonth == 3) ? "April" : currentMonth; 
    currentMonth = (currentMonth == 4) ? "May" : currentMonth; 
    currentMonth = (currentMonth == 5) ? "June" : currentMonth; 
    currentMonth = (currentMonth == 6) ? "July" : currentMonth; 
    currentMonth = (currentMonth == 7) ? "August" : currentMonth; 
    currentMonth = (currentMonth == 8) ? "September" : currentMonth; 
    currentMonth = (currentMonth == 9) ? "October" : currentMonth; 
    currentMonth = (currentMonth == 10) ? "November" : currentMonth; 
    currentMonth = (currentMonth == 11) ? "December" : currentMonth; 

    var currentDate = currentTime.getDate(); 

    // Add suffix to the date 
    currentDate = (currentDate == 1 || currentDate == 21 || currentDate == 31) ? currentDate + "st" : currentDate; 
    currentDate = (currentDate == 2 || currentDate == 22) ? currentDate + "nd" : currentDate; 
    currentDate = (currentDate == 3) || currentDate == 23 ? currentDate + "rd" : currentDate; 
    currentDate = (currentDate > 3 || currentDate < 21 || currentDate > 23 || currentDate < 31) ? currentDate + "th" : currentDate; 


    var currentHours = currentTime.getHours (); 
    var currentMinutes = currentTime.getMinutes (); 

    // Pad the minutes and seconds with leading zeros, if required 
    currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes; 

    // Choose either "AM" or "PM" as appropriate 
    var timeOfDay = (currentHours < 12) ? "AM" : "PM"; 

    // Convert the hours component to 12-hour format if needed 
    currentHours = (currentHours > 12) ? currentHours - 12 : currentHours; 

    // Convert an hours component of "0" to "12" 
    currentHours = (currentHours == 0) ? 12 : currentHours; 

    // Compose the string for display 
    var currentTimeString = "Today is : " + currentDay + " " + currentMonth + " " + currentDate + " " + currentHours + ":" + currentMinutes + " " + timeOfDay; 

    // Update the time display 
    document.getElementById("clock").firstChild.nodeValue = currentTimeString; 
} 

答えて

3

私はRubyのTimeクラスを調べることをお勧めします。具体的には、Time.now()の機能です。

http://www.ruby-doc.org/core/classes/Time.html

そしてどのようにフォーマットするかを決定するために time.strftime()を見て、あなたの上のコードと同じ。

例:

t = Time.now 
puts t.strftime("%d/%m/%Y %H:%M:%S") 
+1

注意Time.nowはサーバーのローカル時刻を使用します。異なるタイムゾーンのユーザーにページを表示する予定がある場合は、utc_offsetを読み上げる必要があります。 –

+0

これはおそらく私の質問を働かせるでしょうか?今時計の自動更新かどうか? –

+0

@ Rod Nelson - オリジナルの質問を追加したり変更したりする場合は、元の質問を更新してください。 –

0

あなたはそれを行うことができますが、それはスティーブ・ヴィルヘルムが指摘したように、あなたは、サーバーの時間を使用しているだろうが、最も重要なのは、あなたが作業を行うサーバーを作ることになり、それを注意することが重要だと確信しクライアントが行うことができ、またそうすべきであることを示します。最も効率的なサーバーを実現するために、可能な限り多くの簡単な処理をクライアントにオフロードすることが重要です。これはちょっとしたことのように思えるかもしれませんが、すべてのページにいくつか小さなものがある場合は、特にサーバーの使用が多くなると大きな問題になります。

これは、アパラチアのトレイルをハイキングした人々が歯ブラシのハンドルを切断するようなものです。それは唯一のオンスか2つですが、あなたが他のすべてのオンスにそのオンスを加えれば、彼らは他のものを切り刻むことから出て、それはポンドまで増やすことができます。

+0

私はそれがあなたが主に私がそれを使用したいと思っているものを購入することを意味するかどうかは、実行中の時計と私の次のギグまでのカウントダウンです!私はTime.now()のような大型のものは見えないので、CSTにクロックを設定する方法を理解します。 –

+0

ああ、あなたがしたいことは、サーバー側のギグの日付と時刻の設定を(ギグの日付のためのモデルで)おそらくクライアント側のjavascriptにギグのローカルタイムと共に渡すことです。クライアントサイドのJavaScriptは、毎秒サーバーに話を聞かせることなく、ブラウザーの場所に基づいてではなく、世界のどこにあるかに関係なく、あなたのギグ開始時刻に基づいてカウントダウンすることができます。 –

関連する問題