Robot
ce55b353ec
Remove all backward compatibility issues, so JCB will not need the [Backward Compatibility] plugin to run. Added new import powers for custom import of spreadsheets. Move the setDocument and _prepareDocument above the display in the site view and custom admin view. Update the trashhelper layout to work in Joomla 5. Add AllowDynamicProperties (Joomla 4+5) to view class to allow Custom Dynamic Get methods to work without issues.
46 lines
1.1 KiB
PHP
46 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace ZipStream;
|
|
|
|
use DateInterval;
|
|
use DateTimeImmutable;
|
|
use DateTimeInterface;
|
|
use ZipStream\Exception\DosTimeOverflowException;
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
abstract class Time
|
|
{
|
|
private const DOS_MINIMUM_DATE = '1980-01-01 00:00:00Z';
|
|
|
|
public static function dateTimeToDosTime(DateTimeInterface $dateTime): int
|
|
{
|
|
$dosMinimumDate = new DateTimeImmutable(self::DOS_MINIMUM_DATE);
|
|
|
|
if ($dateTime->getTimestamp() < $dosMinimumDate->getTimestamp()) {
|
|
throw new DosTimeOverflowException(dateTime: $dateTime);
|
|
}
|
|
|
|
$dateTime = DateTimeImmutable::createFromInterface($dateTime)->sub(new DateInterval('P1980Y'));
|
|
|
|
['year' => $year,
|
|
'mon' => $month,
|
|
'mday' => $day,
|
|
'hours' => $hour,
|
|
'minutes' => $minute,
|
|
'seconds' => $second
|
|
] = getdate($dateTime->getTimestamp());
|
|
|
|
return
|
|
($year << 25) |
|
|
($month << 21) |
|
|
($day << 16) |
|
|
($hour << 11) |
|
|
($minute << 5) |
|
|
($second >> 1);
|
|
}
|
|
}
|