2017-05-09 1 views

답변

2

가장 간단한 방법은 ymd`와 가족 그냥 접근에 명시 적으로 호출 할 '때문에 그들에게 명시 적으로

my $nowDate = DateTime->now(time_zone => 'local'); 

my ($month, $day, $year) = ($nowDate->month, $nowDate->day, $nowDate->year); 
1

DateTime는 (1-12) 이러한 방법, year (YYYY), month을 가지고 있으며, 당신이 한 자리 개월받을 수

my ($year, $month, $day) = map { $nowDate->$_ } qw(year month day); 

day (1-31)

또는 일 (예 : 05이 아닌 5) 일 수 있습니다. 그런 다음 응용 프로그램이 두 자리 형식을 사용하는 경우 map { sprintf "%02d", $nowDate->$_ }을 원할 수 있습니다.

또는 당신은

my ($year, $month, $day) = split '-', $nowDate->ymd;   # 2017-05-09 

또는

my ($year, $month, $day) = unpack "A4A2A2", $nowDate->ymd(''); # 20170509 

방법 ymd은 구분 기호를 지정할 수는, 기본이 -되고, 예를 들어, $nowDate에서 그들을 끌어 할 수 있습니다. 문서를 참조하십시오.

+0

를 얻을 수 (또는 직선 해시에서 값을 끌어)과 구축'sprintf'을 사용하는 것입니다 결과,'wantarray'를 검사하고 스칼라 문맥에서 값 목록을 반환하는 좋은 경우가 있다고 생각합니다. 물론, 지금까지 이러한 변화는'my @dmy = $ date-> dmy'라는 이상한 코드를 깨뜨릴 것입니다. – Borodin

+0

@Borodin 이해가 안됩니다. - ymd는 상황에 민감하지 않습니까? 이것을 하위로 포장 하시겠습니까? "스칼라 컨텍스트에서 값 목록을 반환하는 것"이 ​​무슨 뜻인지는 알지 못합니다. 설명 할 수 있습니까? 나는 특정 프로젝트에서 항상 아이디어를 찾고있는'DateTime'을위한 유틸리티 서브를 가지고 있습니다. 질문은 너무 기본입니다. 질문자 나 방문자가 모르는 사이에 이것을 보여주고 싶었고 사용 방법에 대한 정보를 제공하려고했습니다. – zdim

+0

명확하지 않으면 죄송합니다. 나는 모듈이 쓰여지는 방식을 애도했다. 그것이 의미하는 것처럼,'ymd'는 임의의 문맥에서 하나의'YYYY-MM-DD' 문자열을 반환합니다.리스트 컨텍스트에서'(YYYY, MM, DD)'를 반환하는 것이 그렇게 쉬운 경우, OP의 문제는 즉시 해결됩니다. 말이 돼? – Borodin

관련 문제