-
Notifications
You must be signed in to change notification settings - Fork 154
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
End of month method doesn't consider leap year. #62
Comments
Hey Takumi. Will take a look asap. Also, are u able to add a Japanese translation? |
Hi fightbulc, I've made a translation. Thanks for your developing. |
@takumi-dev, I hope you don't do all these transformations you put up there as your test code. Do you have a real-world example where you don't get the expected result? |
@fightbulc, Sure. So far no problem for my product. Here is a real-world example. $rows = array();
$start = '2016-01-31';
$end = '2016-04-30';
$timezone = 'Asia/Tokyo';
$subjectFormat = __('for %s~%s');
$dateFormat = __('Y-m-d');
$now = new \Moment\Moment($start, $timezone);
$until = new \Moment\Moment($end, $timezone);
$now->subtractDays(1);
$noDate = false;
while( $now->isBefore($until) )
{
$now->addDays(1)->startOf('day');
$next = $now->cloning()->startOf('month');
if( (string)$now->getDay() === '01' )
{
$next->endOf('month');
if( $noDate )
{
$next->setDay($until->getDay());
$noDate = false;
}
}
else
{
$next->addMonths(1)->setDay($until->getDay());
if( $next->getDay() !== $until->getDay() )
{
$next->subtractMonths(1)->endOf('month');
}
if( $next->cloning()->endOf('month')->format() === $next->format() )
{
$noDate = true;
}
}
$subject = sprintf($subjectFormat, $now->format(__('m/d')), $next->format(__('m/d')));
$rows []= $subject;
$now = $next;
}
print_r($rows);
/*
* expected: Array ( [0] => for 01/31~02/29 [1] => for 03/01~03/30 [2] => for 03/31~04/30 )
* real: Array ( [0] => for 01/31~02/28 [1] => for 02/29~03/30 [2] => for 03/31~04/30 )
*/ These codes are for generating rows of a document for kind of estimation. |
Hi, I am working with this library for my product. It is awesome.
Now, I found an issue with leap year.
This is a test code.
This will only happen when I set TimeZone at first.
If I didn't set TimeZone at first, it will not happen.
I used hack like this.
Thanks.
The text was updated successfully, but these errors were encountered: