Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2016, 10:47
Новичок на форуме
Отправить личное сообщение для denik Посмотреть профиль Найти все сообщения от denik
 
Регистрация: 09.02.2016
Сообщений: 4

Помогите переделать скрипт отсчёт времени заменить месяц с английского на руский язык
Здравствуйте.
Есть код счетчика отсчета времени до события:
1, Он работает с форматом даты - 16 February 2020 так и с 2020,02,16
2, А мне нужно чтоб месяц был на русском языке формата 16 февраля 2020 Возможно ли такое реализовать?

time_to_x_hour=false;
function PremierTimer(premiere_date)
{
    if(premiere_date)
    {
        var now=new Date();
        var premiere=new Date(premiere_date);
        time_to_x_hour=(premiere.getTime()-now.getTime())/1000;
    }
 
    if(time_to_x_hour<=0) {
        
        if(document.getElementById('CountdownClockDiv')) 
            document.getElementById('CountdownClockDiv').style.display="none";
        document.getElementById('CountdownClock').innerHTML="Событие состоялась"; return;
        }
    var daysleft = parseInt(time_to_x_hour/(24*60*60));
 
    if (daysleft < 0) daysleft=0;
    var d = daysleft - Math.floor(daysleft/10)*10;
    var dd=0;
    if (daysleft > 100) dd=daysleft-Math.floor(daysleft/100)*100;
    var daysleftFinal;
    var text_day;
    if (d==1 && daysleft!=11 && dd!=11) text_day="День ";
    else if (d>1 && d<5 && (daysleft<10 || daysleft>20) && (!dd || dd > 20 || dd < 5)) text_day="Дня ";
    else if (d>=0) text_day="Дней ";
    if (daysleft > 0) daysleftFinal = 'Событие через<br /><span class="daysLeft">' + daysleft + '&nbsp;' + text_day + '</span><span class="timeLeft">+';  
    else daysleftFinal = '';
    
 
    
    var hours=parseInt((time_to_x_hour-daysleft*(24*60*60))/(60*60));
    var minutes=parseInt((time_to_x_hour-daysleft*(24*60*60)-hours*(60*60))/60);
    var seconds=parseInt(time_to_x_hour-daysleft*(24*60*60)-hours*(60*60)-minutes*60);
    hours=hours.toString().length>1?hours:"0"+hours;
    minutes=minutes.toString().length>1?minutes:"0"+minutes;
    seconds=seconds.toString().length>1?seconds:"0"+seconds;
    time_to_x_hour--;
    if(!document.getElementById('CountdownClockHTML'))
    document.getElementById('CountdownClock').innerHTML="<div id='CountdownClockHTML'></div>";  
    if(document.getElementById('CountdownClockHTML'))
    document.getElementById('CountdownClockHTML').innerHTML=( daysleftFinal ) + 
            hours+':'+
            minutes+':'+
            seconds + '</span>';
    
    setTimeout(function(){PremierTimer();},1000);
}


<div id="CountdownClock"><div id="CountdownClockHTML"><span class="daysLeft"></span><span class="timeLeft"></span></div></div>
<script src="/js/time/clock.js" type="text/javascript"></script>
<script>$(function(){ PremierTimer('16 February 2020,00:00:00'); });</script>
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2016, 11:15
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

<script>
             function PremierTimer(premiere_date){
                 var premiere_date = new Date(premiere_date);
                 monthA = 'января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,декабря'.split(',');
                 return (premiere_date.getDate() + ' ' + monthA[premiere_date.getMonth()] + ' ' + premiere_date.getFullYear());
             }

             alert(PremierTimer('16 February 2020,00:00:00'));
     </script>
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2016, 11:33
Новичок на форуме
Отправить личное сообщение для denik Посмотреть профиль Найти все сообщения от denik
 
Регистрация: 09.02.2016
Сообщений: 4

Спасибо конечно но так не работает выскакивает окно Подтвердить создание диалоговых окон.

И отсчёт времени не показывает как 16 февраля 2020 так 16 February 2020
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2016, 12:04
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Переделывайте скрипт под себя.

<script>
         document.addEventListener('DOMContentLoaded',function () {
             var monthA = 'января,февраля,марта,апреля,мая,июня,июля,августа,сентября,октября,ноября,декабря'.split(',');
             var time_to_x_hour = false;

             function PremierTimer(premiere_date) {
                 if (premiere_date) {
                     var now = new Date();
                     var premiere = new Date(premiere_date);
                     time_to_x_hour = (premiere.getTime() - now.getTime()) / 1000;
                 }
                 
                 document.querySelector('#event').textContent = premiere.getDate() + ' ' + monthA[premiere.getMonth()] + ' ' + premiere.getFullYear();

                 if (time_to_x_hour <= 0) {

                     if (document.getElementById('CountdownClockDiv'))
                         document.getElementById('CountdownClockDiv').style.display = "none";
                     document.getElementById('CountdownClock').innerHTML = "Событие состоялась"; return;
                 }
                 var daysleft = parseInt(time_to_x_hour / (24 * 60 * 60));

                 if (daysleft < 0) daysleft = 0;
                 var d = daysleft - Math.floor(daysleft / 10) * 10;
                 var dd = 0;
                 if (daysleft > 100) dd = daysleft - Math.floor(daysleft / 100) * 100;
                 var daysleftFinal;
                 var text_day;
                 if (d == 1 && daysleft != 11 && dd != 11) text_day = "День ";
                 else if (d > 1 && d < 5 && (daysleft < 10 || daysleft > 20) && (!dd || dd > 20 || dd < 5)) text_day = "Дня ";
                 else if (d >= 0) text_day = "Дней ";
                 if (daysleft > 0) daysleftFinal = 'Событие через<br /><span class="daysLeft">' + daysleft + '&nbsp;' + text_day + '</span><span class="timeLeft">+';
                 else daysleftFinal = '';



                 var hours = parseInt((time_to_x_hour - daysleft * (24 * 60 * 60)) / (60 * 60));
                 var minutes = parseInt((time_to_x_hour - daysleft * (24 * 60 * 60) - hours * (60 * 60)) / 60);
                 var seconds = parseInt(time_to_x_hour - daysleft * (24 * 60 * 60) - hours * (60 * 60) - minutes * 60);
                 hours = hours.toString().length > 1 ? hours : "0" + hours;
                 minutes = minutes.toString().length > 1 ? minutes : "0" + minutes;
                 seconds = seconds.toString().length > 1 ? seconds : "0" + seconds;
                 time_to_x_hour--;
                 if (!document.getElementById('CountdownClockHTML'))
                     document.getElementById('CountdownClock').innerHTML = "<div id='CountdownClockHTML'></div>";
                 if (document.getElementById('CountdownClockHTML'))
                     document.getElementById('CountdownClockHTML').innerHTML = (daysleftFinal) +
                             hours + ':' +
                             minutes + ':' +
                             seconds + '</span>';

                 setTimeout(function () { PremierTimer(); }, 1000);
             }

             PremierTimer('16 February 2020,00:00:00');
         })



     </script>

    <div id="event"></div>
    <div id="CountdownClock"><div id="CountdownClockHTML"><span class="daysLeft"></span><span class="timeLeft"></span></div></div>
    <script></script>
Ответить с цитированием
  #5 (permalink)  
Старый 09.02.2016, 12:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от denik
мне нужно чтоб месяц был на русском языке формата 16 февраля 2020 Возможно ли такое реализовать?
alert((new Date()).toLocaleDateString('ru-RU'))
Ответить с цитированием
  #6 (permalink)  
Старый 09.02.2016, 19:19
Новичок на форуме
Отправить личное сообщение для denik Посмотреть профиль Найти все сообщения от denik
 
Регистрация: 09.02.2016
Сообщений: 4

Вы меня не правильно наверное поняли. В статьях уже проставлена дата формата 16 февраля 2020 месяц на русском языке. Чтоб не переписывать все статьи и нужно переделать скрипт. чтоб он отсчёт вёл от такова вывода даты 11 августа 2020, 18 апреля 2020 и т.д.
Ответить с цитированием
  #7 (permalink)  
Старый 09.02.2016, 22:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

denik,
остальные месяцы допишите сами

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<div id="CountdownClock"><div id="CountdownClockHTML"><span class="daysLeft"></span><span class="timeLeft"></span></div></div>


<script>   time_to_x_hour = false;

function PremierTimer(premiere_date) {
    if (premiere_date) {
        premiere_date = premiere_date.replace(/[а-яё]+/gi, function(a) {
            return {
                'января': 'January',
                'февраля': 'February'
            }[a] || a
        })
        var now = new Date();
        var premiere = new Date(premiere_date);
        time_to_x_hour = (premiere.getTime() - now.getTime()) / 1000;
    }

    if (time_to_x_hour <= 0) {

        if (document.getElementById('CountdownClockDiv'))
            document.getElementById('CountdownClockDiv').style.display = "none";
        document.getElementById('CountdownClock').innerHTML = "Событие состоялась";
        return;
    }
    var daysleft = parseInt(time_to_x_hour / (24 * 60 * 60));

    if (daysleft < 0) daysleft = 0;
    var d = daysleft - Math.floor(daysleft / 10) * 10;
    var dd = 0;
    if (daysleft > 100) dd = daysleft - Math.floor(daysleft / 100) * 100;
    var daysleftFinal;
    var text_day;
    if (d == 1 && daysleft != 11 && dd != 11) text_day = "День ";
    else if (d > 1 && d < 5 && (daysleft < 10 || daysleft > 20) && (!dd || dd > 20 || dd < 5)) text_day = "Дня ";
    else if (d >= 0) text_day = "Дней ";
    if (daysleft > 0) daysleftFinal = 'Событие через<br /><span class="daysLeft">' + daysleft + '&nbsp;' + text_day + '</span><span class="timeLeft">+';
    else daysleftFinal = '';



    var hours = parseInt((time_to_x_hour - daysleft * (24 * 60 * 60)) / (60 * 60));
    var minutes = parseInt((time_to_x_hour - daysleft * (24 * 60 * 60) - hours * (60 * 60)) / 60);
    var seconds = parseInt(time_to_x_hour - daysleft * (24 * 60 * 60) - hours * (60 * 60) - minutes * 60);
    hours = hours.toString().length > 1 ? hours : "0" + hours;
    minutes = minutes.toString().length > 1 ? minutes : "0" + minutes;
    seconds = seconds.toString().length > 1 ? seconds : "0" + seconds;
    time_to_x_hour--;
    if (!document.getElementById('CountdownClockHTML'))
        document.getElementById('CountdownClock').innerHTML = "<div id='CountdownClockHTML'></div>";
    if (document.getElementById('CountdownClockHTML'))
        document.getElementById('CountdownClockHTML').innerHTML = (daysleftFinal) +
        hours + ':' +
        minutes + ':' +
        seconds + '</span>';

    setTimeout(function() {
        PremierTimer();
    }, 1000);
}</script>


<script>$(function(){ PremierTimer('16 февраля 2020,00:00:00'); });</script>

Последний раз редактировалось рони, 09.02.2016 в 22:46.
Ответить с цитированием
  #8 (permalink)  
Старый 10.02.2016, 01:34
Новичок на форуме
Отправить личное сообщение для denik Посмотреть профиль Найти все сообщения от denik
 
Регистрация: 09.02.2016
Сообщений: 4

Вот вам спасибо большое!!! Это то что мне было нужно. Работает как часы
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать скрипт F_1N Общие вопросы Javascript 1 01.12.2011 19:23
Помогите! "Не работает скрипт отсчета времени! Я нуб) Dobson Общие вопросы Javascript 4 28.05.2011 18:20
Скрипт отображающий время. Помогите переделать с 12 часового формата на 24. Etoneja Общие вопросы Javascript 3 11.02.2011 08:49
Помогите переделать скрипт TheBabka Общие вопросы Javascript 2 04.11.2010 22:46