Как я могу создать относительные/приблизительные даты в Perl?

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

ОТДЕЛЕНИЯ плюс CSS! = семантический, также. Хороший HTML хорошо стоит для SEO и доступности всегда, или таблицы или CSS используются для расположения. Вы получаете действительно эффективный, быстрый веб-дизайн путем объединения действительно простых таблиц с некоторым хорошим CSS.

разметки Таблицы могут быть более доступными, чем разметки CSS, и реверс также верен - он зависит ПОЛНОСТЬЮ от исходного порядка содержания, и просто потому что Вы избежали, чтобы таблицы не означали, что пользователи с программами экранного доступа автоматически хорошо проведут время на Вашем сайте. Таблицы расположения не важны доступу программы экранного доступа, если содержание имеет смысл, когда линеаризуется, точно то же, как будто Вы делаете расположение CSS. Таблицы данных отличаются; их действительно трудно повысить правильно, и даже затем пользователи программного обеспечения программы экранного доступа обычно не знают команды, которые они должны использовать для понимания данных.

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

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

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

7
задан Community 23 May 2017 в 11:48
поделиться

3 ответа

Обновление: Похоже как эта функция реализована в плагине Template Toolkit . Я оставляю здесь остальную часть своего ответа для справки, но Template :: Plugin :: DtFormatter может быть лучшим местом для поиска.

Глядя на исходный код этого модуля, я был приведен к DateTime :: Format :: Natural , который кажется связанным с тем, что вы хотите.

Предыдущий ответ:

Посмотрите в Date :: Calc , чтобы получить дельты, используя Delta_DHMS . Вы должны уметь использовать эти дельты, чтобы выбрать, как вы собираетесь сформулировать дату.

Это очень элементарная отправная точка. Он содержит ошибки, но иллюстрирует основную идею. Добавьте логику по вкусу.

#!/usr/bin/perl

use strict;
use warnings;

use Date::Calc qw(:all);
use Lingua::EN::Inflect qw( NO );

my @dates = (
    [ 2009, 7,  6 ],
    [ 2009, 7, 30 ],
    [ 2009, 7,  9 ],
    [ 2009, 7,  9, 12, 32 ],
    [ 2009, 7, 12,  5, 43 ],
    [ 2009, 7,  3,  5, 14 ],
    [ 2010, 8, 9 ],
    [ 2012, 8, 9 ],
    [ 2013, 8, 9 ],
);

for my $date ( @dates ) {
    print "@$date: ", relative_when( $date ), "\n";
}

sub relative_when {
    my ($year, $month, $day, $hour, $min, $sec) = @{ $_[0] };
    my ($Dyear, $Dmon, $Dday, $Dhr, $Dmin, $Dsec) = Delta_YMDHMS(
        Today_and_Now(),
        $year, $month, $day, $hour || 0, $min || 0, $sec || 0
    );
    return NO('year',  $Dyear )     if $Dyear > 0;
    return NO('month', $Dmon )      if $Dmon  > 0;
    return NO('week',  int($Dday/7) if $Dday  > 6;
    return NO('day',   $Dday)       if $Dday  > 1;
    return 'tomorrow' if $Dday == 1;
    return 'today'    if $Dday == 0;
    return "";
}

__END__

Вывод:

C:\Temp> dfg
2009 7 6:
2009 7 30: 2 weeks
2009 7 9: today
2009 7 9 12 32: today
2009 7 12 5 43: 2 days
2009 7 3 5 14:
2010 8 9: 1 year
2012 8 9: 3 years
2013 8 9: 4 years
8
ответ дан 6 December 2019 в 14:07
поделиться

Date :: Manip очень эффективен для подобных вещей, но медленнее, чем Дата :: Расчет .

3
ответ дан 6 December 2019 в 14:07
поделиться

Посмотрите Сценарии относительного времени в Twitter Fan Wiki.

4
ответ дан 6 December 2019 в 14:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: