Конвертировать Clock в Ruby on Rails из JavaScript - PullRequest
0 голосов
/ 02 февраля 2011

Я использую этот скрипт на моем текущем веб-сайте.Я могу заставить его работать в Ruby on Rails 3, но мне было интересно, можно ли его переписать в Ruby.Если так, где я могу найти информацию об этом?

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;
}

Ответы [ 2 ]

3 голосов
/ 02 февраля 2011

Я бы посоветовал взглянуть на класс Time Руби. В частности, функция Time.now().

http://www.ruby -doc.org / ядро ​​/ классов / Time.html

А затем посмотрите на time.strftime(), чтобы определить, как отформатировать его так же, как в приведенном выше коде.

Пример:

t = Time.now  
puts t.strftime("%d/%m/%Y %H:%M:%S")  
0 голосов
/ 02 февраля 2011

Конечно, вы можете сделать это, но важно отметить, что, как указал Стив Вильгельм, вы бы тогда использовали время сервера, но самое главное, вы бы заставили сервер работать так, как может и должен делать клиент. , Для того, чтобы иметь наиболее эффективный сервер, важно перегрузить на клиенте как можно больше тривиальной обработки. Это может показаться незначительным, но если у вас есть несколько незначительных элементов на каждой странице, они могут быть важны, особенно когда ваш сервер начинает сильно привыкать.

Это похоже на то, как люди, которые идут по Аппалачской тропе, отрезали ручку своей зубной щетки. Это всего одна или две унции, но если вы добавите эту унцию ко всем остальным унциям, которые они теряют от измельчения других своих вещей, это может сложиться до фунтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...