1

9/15/12を255形式に変換する方法を誰かに教えてもらえないかと思っていました。getdate配列からphpで何かを取得すると、ydateを取得できます。

4

6 に答える 6

3

1 <= yday <= 366PHPydaygetdate(). _ PERL ではよくあることですが、それを行う方法は複数あります。最も単純なメカニズムはlocaltime()、今日の日付に使用することです。

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

別の日付でやりたい場合は、おそらくTimeDateCPANモジュールを使用します

use Date::Parse;

print time2str("%j",str2time("9/15/2012"));
于 2012-09-07T17:52:05.210 に答える
2

ydayTawnos の php のfromへの言及は的を射ていると思いますgetdate()。1 つのオプションを次に示します (2012 年が日付文字列の年であると仮定します)。

use strict;
use warnings;
use Date::Calc qw/Day_of_Year/;

my $date = '9/15/12';
my ( $month, $day, $year ) = split '/', $date;
my $doy = Day_of_Year( "20$year", $month, $day ) - 1;

print $doy; # (0 - 365)

出力:

258
于 2012-09-07T18:14:31.093 に答える
2

年間通算日を指定しますか? ただし、それは 258 日目 (0 ベース) または 259 日目 (1 ベース) になります。コア Perl のみを使用:

use Time::Local qw( timegm );
my $date = '9/15/12';
my ($m,$d,$y) = split(qr{/}, $date);
my $epoch = timegm(0,0,0, $d,$m-1,$y);
my $yday = ( gmtime($epoch) )[7];   # 258 (0-based index)

timegm+gmtimeは日付の時間帯に関係なく適用されることに注意してください。

于 2012-09-07T18:19:01.393 に答える
1

別の方法として、コア モジュールTime::Pieceを使用します。

#!/usr/bin/env perl
use strict;
use warnings;
use Time::Piece;
my $t = Time::Piece->strptime(shift,"%m/%d/%y");
print $t->yday, "\n";

日の出力はゼロ相対で、1 月 1 日 = 0 です。

于 2012-09-07T18:50:06.250 に答える
1
my $dt = '9/15/2012';
my ( $m, $d, $y ) = split( '/', $dt );
my $t = POSIX::mktime( 0, 0, 0, $d, $m - 1, $y - 1900 );
say [ localtime $t ]->[7] - 3;

ユリウス日 (マイナス 1) は、localtimeおよびから返されるリストのスロット 7gmtimeです。なぜ 3 を引くのですか? 知らない; 9 月 15 日は 259 ユリウスです。それでも、'9/15/2012' を 255 にマッピングする機能を実行します。

于 2012-09-07T20:44:19.560 に答える
1

strftimeコア モジュールの関数のみを使用できますPOSIX

use strict;
use POSIX qw(strftime);

print strftime "%j", localtime(time);
于 2012-09-07T18:31:32.640 に答える