2011-02-02 7 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

루비의 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

당신은 그것을 할 수 있지만, 스티브 빌헬름가 지적했듯이, 그런 다음 서버 시간을 사용하는 것입니다하지만 가장 중요한 것은 당신이 일을 할 서버를 만드는 것, 점에 유의하는 것이 중요합니다 물론 고객이 할 수 있고해야하는 일. 가장 효율적인 서버를 가지려면 클라이언트에 가능한 한 많은 사소한 프로세싱을 제공하는 것이 중요합니다. 사소한 일처럼 보일지 모르지만 모든 페이지에 여러 가지 사소한 일이 있으면 중요한 일을 할 수 있습니다. 특히 서버 사용이 많이 시작될 때 특히 그렇습니다.

애팔 래 치아 산길을 하이킹하는 사람들이 칫솔 손잡이를 자르는 것과 같습니다. 단지 1 온스 또는 2 온스입니다.하지만 다른 온스에 온스를 더하면 다른 것들을 잘게 썰어서 흘릴 수 있습니다.

+0

나는 당신이 무엇을 의미하는지 확실하지 않은 곳에서 볼 수 있는데, 사용자가 주로 그것을하고 있다는 것을 의미한다. 나는 그것을 사용하기를 원하는 것은 실행중인 시계와 타이머를 카운트 다운하는 것이다. CST에 시계를 설정하는 방법을 알아낼 것입니다. Time.now()와 같은 코드가 없어서 코드 마녀 1 톤을 절약 할 수 있습니다. –

+0

아, 그럼 당신이 원하는 것은 공연 날짜와 시간 (아마도 공연 날짜를위한 모델에서)의 서버 측 설정을 가지고 클라이언트 사이드 자바 스크립트에 대한 공연 시간을 전달하는 것입니다. 이제 클라이언트 측 자바 스크립트는 매 초마다 서버와 대화하지 않고 브라우저가있는 곳이 아닌 세계에서의 위치와 관련하여 기가 시작 시간을 기준으로 셀 수 있습니다. –

관련 문제