Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Форматирование строк (KES)
Author Message
KES
Участник форума



Joined: 19 Oct 2006
Posts: 214
Карма: 0
   поощрить/наказать

Location: сВознесеновка, Мелитопольский р-н, Запорожская обл. Украина

PostPosted: Tue Oct 02, 2007 3:21 pm (написано за 1 минуту 18 секунд)
   Post subject: Форматирование строк
Reply with quote

Есть объект Date в котором лежит текущая дата нужно вывести строку в виде 'yyyy-mm-dd hh:mm:ss'

Что-то в интернете вобще мало инфы для javascript по этому поводу
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Tue Oct 02, 2007 3:37 pm (спустя 15 минут; написано за 15 секунд)
   Post subject:
Reply with quote

KES
А Вы не стесняйтесь пользоваться поиском по форуму =)
Расширения объекта Date (forum.dklab.ru/js/advises/RasshireniyaObektaDate.html)
Back to top
View user's profile Send private message
KES
Участник форума



Joined: 19 Oct 2006
Posts: 214
Карма: 0
   поощрить/наказать

Location: сВознесеновка, Мелитопольский р-н, Запорожская обл. Украина

PostPosted: Wed Oct 03, 2007 6:55 pm (спустя 1 день 3 часа 17 минут; написано за 22 секунды)
   Post subject:
Reply with quote

Та искал и не только по форуму
Спасибо
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 9:19 am (спустя 14 часов 24 минуты; написано за 5 секунд)
   Post subject:
Reply with quote

Если совсем по спартански:
Code (JavaScript): скопировать код в буфер обмена
(function(p){
    with( p ){
        p.Y = getFullYear;
        p.M = function(){ return this.getMonth() + 1 };
        p.D = getDate;
        p.h = getHours;
        p.m = getMinutes;
        p.s = getSeconds;
        p.y = Y;
        p.format = function(f){
            var self = this
            return f.replace(/\%([YyMDhms])/g,
                function(a,k){
                    var str = '0' + self[k]()
                    return str.substring(str.length - (k == 'Y' ? 4 : 2))
                }
            )
        }
    }
})(Date.prototype)

    var date = new Date;
    alert(date.format('Year: %Y\nMonth: %M\nDate: %D\nHours: %h\nMinutes: %m\nSeconds: %s'))

    document.write(
        date.format('%y.%M.%D %h:%m:%s')
    )
Back to top
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 10:10 am (спустя 50 минут; написано за 2 минуты 51 секунду)
   Post subject:
Reply with quote

Гость wrote:
Если совсем по спартански...
Ух! Какие красивые ясность и простота! Классно!
Один только вопрос - почему игреки надо иметь и большой, и маленький, а вот эмку, к примеру, достаточно иметь только большую? Есть такой стандарт при работе с датами?
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 4:29 pm (спустя 6 часов 19 минут; написано за 36 секунд)
   Post subject:
Reply with quote

это из мануала другого языка, но формат даты одинаков - java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
Back to top
View user's profile Send private message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 4:37 pm (спустя 7 минут; написано за 1 минуту 5 секунд)
   Post subject:
Reply with quote

только один вопрос к автору спартанского примера

с какой целью расширение объекта Date (вернее его прототипа) создается через анонимную функцию?
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 4:54 pm (спустя 17 минут; написано за 2 минуты 56 секунд)
   Post subject:
Reply with quote

Rumata wrote:
...с какой целью расширение объекта Date (вернее его прототипа) создается через анонимную функцию?
Осмелюсь предположить, что такой вариант выбран затем, чтобы избежать создания глобальной переменной. Ведь для спартанского (вернее будет, наверно, лаконичного) кода пришлось бы написать:
Code (JavaScript): скопировать код в буфер обмена
var p = Date.protoytpe;
А в данном случае удается этого избежать, используя агрумент анонимной функции.
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 5:21 pm (спустя 26 минут; написано за 2 минуты 7 секунд)
   Post subject:
Reply with quote

AKS
весь спартанский пример аналогичен следующему
Code (JavaScript): скопировать код в буфер обмена
Date.prototype.Y = Date.prototype.getFullYear;
...
а дальше заполните по порядку...
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 5:31 pm (спустя 10 минут; написано за 3 минуты 7 секунд)
   Post subject:
Reply with quote

Аналогичен, конечно. Только один "лаконичный" (краткий, немногословный), а второй обычный.
Естественно, каждый для себя запишет так, как в "аналоге". Но идея, преподнесенная в "спартанской" форме, радует глаз.
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Thu Oct 04, 2007 5:56 pm (спустя 25 минут; написано за 5 минут 14 секунд)
   Post subject:
Reply with quote

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

лаконичный же код запутан - всего лишь расширяется "класс" Date. а глаз бегает по коду - не упустить бы чего.
with там еще...
Back to top
View user's profile Send private message
Denis Usenko
Участник форума



Joined: 06 Feb 2006
Posts: 54
Карма: 13
   поощрить/наказать


PostPosted: Fri Oct 05, 2007 4:31 am (спустя 10 часов 34 минуты; написано за 7 секунд)
   Post subject:
Reply with quote

AKS wrote:
Один только вопрос - почему игреки надо иметь и большой, и маленький, а вот эмку, к примеру, достаточно иметь только большую? Есть такой стандарт при работе с датами?
Нет, стандарты не причем, Y -- год в 4 символа, y -- год в 2 символа.

Rumata, сильно не пинайте )) пианист играет как умеет ))
Вот точно замечено, with там, действительно, надо убрать -- совершенно лишенее.
Rumata wrote:
лаконичный же код запутан - всего лишь расширяется "класс" Date. а глаз бегает по коду - не упустить бы чего.
Ничего там не запутано. Люди, как ни крути, быстро оперируют только паттернами. И хорошие программисты и плохие, тоже. Просто для кого-то это новый "паттерн" )) Точнее сказать, теперь уже не новый ))
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Fri Oct 05, 2007 8:35 am (спустя 4 часа 4 минуты; написано за 11 секунд)
   Post subject:
Reply with quote

Denis Usenko wrote:
Y -- год в 4 символа, y -- год в 2 символа.
Спасибо!
Back to top
View user's profile Send private message Send e-mail
Denis Usenko
Участник форума



Joined: 06 Feb 2006
Posts: 54
Карма: 13
   поощрить/наказать


PostPosted: Fri Oct 05, 2007 9:05 am (спустя 30 минут; написано за 2 минуты 54 секунды)
   Post subject:
Reply with quote

Rumata
Без вызвавшего неприязнь заворачивания в функцию:
Code (JavaScript): скопировать код в буфер обмена
Date.prototype.getMonthNumber = function(){ return 1 + this.getMonth()}
Date.prototype.format = function(fs){
    var self = this
    return fs.replace(/\%([YyMDhms])/g,
        function(a,k){
            var str = '0' + self[{
               Y: 'getFullYear',
               y: 'getFullYear', //
               M: 'getMonthNumber',
               D: 'getDate',
               h: 'getHours',
               m: 'getMinutes',
               s: 'getSeconds' //
            }[k]]()
            return str.substring(str.length - (k == 'Y' ? 4 : 2))
        }
    )
}
только что-то мне подсказывает, что и этот вариант не будет принят благосклонно :) Или ошибаюсь, и так значитально лучше стало ? :)

Last edited by Denis Usenko on Fri Oct 05, 2007 10:01 am; edited 1 time in total
Back to top
View user's profile Send private message
KES
Участник форума



Joined: 19 Oct 2006
Posts: 214
Карма: 0
   поощрить/наказать

Location: сВознесеновка, Мелитопольский р-н, Запорожская обл. Украина

PostPosted: Fri Oct 05, 2007 9:32 am (спустя 26 минут; написано за 40 секунд)
   Post subject:
Reply with quote

Получается что-то вроде 2007-7-2 1:3:8, вместо 2007-07-02 01:03:08
Back to top
View user's profile Send private message
Denis Usenko
Участник форума



Joined: 06 Feb 2006
Posts: 54
Карма: 13
   поощрить/наказать


PostPosted: Fri Oct 05, 2007 10:04 am (спустя 31 минуту; написано за 2 минуты 6 секунд)
   Post subject:
Reply with quote

Поправил код (из-за лишней запятой не работало в опера и ие).
KES Опера 9.21, ИЕ 6, FF 2.0.0.7 -- все правильно:
07.10.05 11:00:38
2007.10.05 11:00:38

А браузер какой?
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Oct 10, 2007 12:01 am (спустя 4 дня 13 часов 57 минут; написано за 3 минуты 14 секунд)
   Post subject:
Reply with quote

dollar-script.googlecode.com/svn/trunk/$date.js

пример:
Code (any language): скопировать код в буфер обмена
$date().$format( '%u %d-%m-%y | %h:%M:%s | $u $d-$m-$y | $h:$M:$s.$l | %%L $$L | $L' ) );
вывод:
Code (any language): скопировать код в буфер обмена
базовый префикс - $, но если написать вместо него префикс %, то к значению будет приписан слева ноль и полученная строка будет обрезана до 2 символов.

$substr - это расширение прототипа String такого вида:
Code (any language): скопировать код в буфер обмена
$string.$substr= function( start, end ){
        start= start || 0;
        end= end || 0;
        start= ( start >= 0 )?( start ):( this.length + start );
        end= ( end > 0 )?( end ):( this.length + end );
        return this.substring( start, end );
}
Back to top
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Oct 10, 2007 12:03 am (спустя 2 минуты; написано за 24 секунды)
   Post subject:
Reply with quote

а als.$keys().$join() - это список всех ключей als без разделителей
Back to top
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Fri Oct 12, 2007 1:19 pm (спустя 2 дня 13 часов 15 минут; написано за 22 секунды)
   Post subject:
Reply with quote

Denis Usenko wrote:
Без вызвавшего неприязнь
мда... тот первый вариант был лучше
Back to top
View user's profile Send private message
KES
Участник форума



Joined: 19 Oct 2006
Posts: 214
Карма: 0
   поощрить/наказать

Location: сВознесеновка, Мелитопольский р-н, Запорожская обл. Украина

PostPosted: Fri Oct 12, 2007 2:31 pm (спустя 1 час 11 минут; написано за 14 секунд)
   Post subject:
Reply with quote

Во, то что доктор прописал =)
extjs.com/deploy/dev/docs/output/Date.html
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sat Oct 13, 2007 3:10 pm (спустя 1 день 39 минут; написано за 16 секунд)
   Post subject:
Reply with quote

ужос, скрипт на пол метра в упакованном виде...
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML