DateTime::Locale에는 다양한 로케일과 국가에 대한 매우 다양한 날짜 및 시간 형식 목록이 있습니다. 고객이있는 국가에 따라 전자 메일에서 고객에게 사용하고 싶습니다.어떻게 DateTime :: Locale의 형식을 DateTime 객체와 함께 사용합니까?
설명서에서 중간 또는 긴 날짜 기능을 실제로 사용하는 방법을 이해하는 것은 약간 어렵습니다.
Long 2008-02-05T18:30:30 = 5. Februar 2008 1995-12-22T09:05:02 = 22. Dezember 1995 -0010-09-15T04:44:23 = 15. September -10 Medium 2008-02-05T18:30:30 = 05.02.2008 1995-12-22T09:05:02 = 22.12.1995 -0010-09-15T04:44:23 = 15.09.-010
이 대단한 예를 들어, DateTime::Locale::de_DE 해당 문서에서 이러한 date formats (발췌)를 보여줍니다. DateTime::Locale::Base에 따르면, 로케일 객체에는 다음 형식을 얻기위한 메소드가 있습니다 : $locale->date_format_long()
및 $locale->date_format_medium()
.
for my $locale (qw(ar da de en_GB es fr ru tr)) { $dt->set_locale($locale); print_date($dt); } sub print_date { my ($dt) = @_; my $locale = $dt->locale; printf( "In %s: %s\n", $locale->name, $dt->format_cldr($locale->date_format_full) ); }
그래서 이러한 방법에서 나오는 형식이 CLDR 형식입니다. 시원한. 그러나 Sinan이 보여주는 것은 tedius로 보입니다. 즉, 그것은 다음과 같습니다 위해
for (qw(ar da de en_GB es fr ru tr)) {
my $dt2 = DateTime->now(locale => $_);
printf "%s: %s\n", $_, $dt2->format_cldr($dt2->locale->date_format_long);
}
짧게, 나는 물론 같은 것을 할 수 있도록 :
package DateTime;
sub stringify_long {
return $_[0]->format_cldr($_[0]->locale->date_format_long);
}
package Main;
use strict; use warnings;
use DateTime;
my $dt = DateTime->now(locale => 'de_DE');
print $dt->stringify_long;
하지만 난 그렇게하고 싶지 않아. 그래서 내 질문 : 누락 된 빌드 메서드를 해당 로케일에서 이러한 형식 중 하나에 따라 DateTime 개체를 stringify 수있는 방법이 있습니까?
포맷터가 좋은 옵션 인 것 같습니다. 그것을 설명해 주셔서 감사합니다. 나는 주로 그런 종류의 일을 많이한다면 덜 반복적 인 옵션을 찾고 있습니다. – simbabque