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

Либо измените:

style name="AppBaseTheme" 

на

style name="AppTheme" 

в вашем файле styles.xml. Или измените:

android:theme="@style/AppTheme"

на

android:theme="@style/AppBaseTheme"

в теге приложения манифеста.

Оба должны быть одинаковыми. По сути, ваше приложение пытается использовать AppBaseTheme, которого не существует.

10
задан brian d foy 17 November 2008 в 22:42
поделиться

4 ответа

Дата:: Manip делает точно это.

Вот пример программы:

#!/usr/bin/perl

use strict;
use Date::Manip;

while (<DATA>)
{
  chomp;
  print UnixDate($_, "%Y-%m-%d %H:%M:%S"),  " ($_)\n";
}

__DATA__
today
yesterday
tomorrow
last Tuesday
next Tuesday
1 hour ago
next week

Который приводит к следующему выводу:

2008-11-17 15:21:04 (today)
2008-11-16 15:21:04 (yesterday)
2008-11-18 15:21:04 (tomorrow)
2008-11-11 00:00:00 (last Tuesday)
2008-11-18 00:00:00 (next Tuesday)
2008-11-17 14:21:04 (1 hour ago)
2008-11-24 00:00:00 (next week)

UnixDate является одной из функций, обеспеченных Date::Manip, первым аргументом является дата/время в любом формате, который поддерживает модуль, второй аргумент описывает, как отформатировать дату/время. Существуют другие функции, которые просто анализируют эти "человеческие" даты, не форматируя их, чтобы использоваться в вычислениях дельты, и т.д.

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

можно также найти интересным посмотреть на DateTime::Format семейство, конкретно DateTime:: Формат:: Естественный. после того как Вы проанализировали свою дату/время в объект DateTime, можно управлять и оценить ее в целом наборе различных путей.

вот пример программы:

use strict;
use warnings;

use DateTime::Format::Natural;

my( $parser ) = DateTime::Format::Natural->new;

while ( <> ) {

    chomp;
    my( $dt ) = $parser->parse_datetime( $_ );

    if ( $parser->success ) {

        print join( ' ', $dt->ymd, $dt->hms ) . "\n";
    }
    else {

        print $parser->error . "\n";
    }
}

вывод:

tomorrow  
2008-11-18 21:48:49  
next Tuesday  
2008-11-25 21:48:53  
1 week from now  
2008-11-24 21:48:57  
1 hour ago  
2008-11-17 20:48:59  

TMTOWTDI :)

- steve

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

Лично, я всегда использовал Время:: ParseDate для этого. Это понимает в значительной степени каждый формат, который я попробовал.

Абсолютные форматы даты

    Dow, dd Mon yy
    Dow, dd Mon yyyy
    Dow, dd Mon
    dd Mon yy
    dd Mon yyyy
    Month day{st,nd,rd,th}, year
    Month day{st,nd,rd,th}
    Mon dd yyyy
    yyyy/mm/dd
    yyyy-mm-dd      (usually the best date specification syntax)
    yyyy/mm
    mm/dd/yy
    mm/dd/yyyy
    mm/yy
    yy/mm      (only if year > 12, or > 31 if UK)
    yy/mm/dd   (only if year > 12 and day < 32, or year > 31 if UK)
    dd/mm/yy   (only if UK, or an invalid mm/dd/yy or yy/mm/dd)
    dd/mm/yyyy (only if UK, or an invalid mm/dd/yyyy)
    dd/mm      (only if UK, or an invalid mm/dd)

Относительные форматы даты:

    count "days"
    count "weeks"
    count "months"
    count "years"
    Dow "after next"
    Dow "before last"
    Dow                     (requires PREFER_PAST or PREFER_FUTURE)
    "next" Dow
    "tomorrow"
    "today"
    "yesterday"
    "last" dow
    "last week"
    "now"
    "now" "+" count units
    "now" "-" count units
    "+" count units         
    "-" count units
    count units "ago"

Абсолютные форматы времени:

    hh:mm:ss[.ddd] 
    hh:mm 
    hh:mm[AP]M
    hh[AP]M
    hhmmss[[AP]M] 
    "noon"
    "midnight"

Относительные форматы времени:

    count "minutes"         (count can be franctional "1.5" or "1 1/2")
    count "seconds"
    count "hours"
    "+" count units
    "+" count
    "-" count units
    "-" count
    count units "ago"

Форматы часового пояса:

    [+-]dddd
    GMT[+-]d+
    [+-]dddd (TZN)
    TZN

Специальные форматы:

    [ d]d/Mon/yyyy:hh:mm:ss [[+-]dddd]
    yy/mm/dd.hh:mm
2
ответ дан 3 December 2019 в 14:44
поделиться

Я предполагаю, что у Вас есть контекст. как обработка естественного языка могла помочь здесь? как произвольное предположение Вы могли просто найти ближайшую дату, которая является точной датой (не относительно сегодня), и используйте today/tommorow/yesterday для касаний этого.

-2
ответ дан 3 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

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