-
Notifications
You must be signed in to change notification settings - Fork 0
/
FormatConverter.php
44 lines (37 loc) · 1.5 KB
/
FormatConverter.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
namespace mackiavelly\juidatetimepicker;
use yii\helpers\BaseFormatConverter;
class FormatConverter extends BaseFormatConverter
{
public static function convertDatePhpOrIcuToJui($pattern, $type = 'date', $locale = null)
{
if (strncmp($pattern, 'php:', 4) === 0) {
return static::convertDatePhpToJui(substr($pattern, 4));
} else {
return static::convertDateIcuToJui($pattern, $type, $locale);
}
}
public static function convertTimePhpOrIcuToJui($pattern, $type = 'time', $locale = null)
{
if (strncmp($pattern, 'php:', 4) === 0) {
return static::convertTimePhpToJui(substr($pattern, 4));
} else {
return static::convertTimePhpToJui(static::convertDateIcuToPhp($pattern, $type, $locale));
}
}
public static function convertTimePhpToJui($pattern)
{
return strtr(preg_replace('~[^GHghisaAeP\W]~', '', $pattern), [
'G' => 'H', // Hour with no leading 0 (24 hour)
'H' => 'HH', // Hour with leading 0 (24 hour)
'g' => 'h', // Hour with no leading 0 (12 hour)
'h' => 'hh', // Hour with leading 0 (12 hour)
'i' => 'mm', // Minute with leading 0
's' => 'ss', // Second with leading 0
'a' => 'tt', // am or pm for AM/PM
'A' => 'TT', // AM or PM for AM/PM
'e' => 'z', // Timezone as defined by timezoneList
'P' => 'Z' // Timezone in Iso 8601 format (+04:45)
]);
}
}