下载地址:​百度网盘
第1章 Oracle19c RAC+DG生产实战(3)
1-13.1.Oracle19cRAC-DG基本概念-51[21:32]
1-23.2.Oracle19cRAC-DG生产实战架构介[10:55]
1-33.3.Oracle19cRAC 2节点+1节点DG[09:25]
1-43.4.RAC DataGuard主库RAC配置讲解[12:23]
1-53.5.RAC DataGuard主库RAC配置过程[08:56]
1-63.6.RAC DataGuard备库单机配置讲解[09:56]
1-73.7.RAC DataGuard备库单机配置过程[06:53]
1-83.8.Oracle RAC单机DataGuard创[16:22]
1-93.9.RAC与单机dataguard开启同步与数据[11:41]
1-103.10.RAC与单机dataguard临时表空间问[10:33]
1-113.11.RAC环境下DataGuard启停数据库[08:31]
1-123.12.RAC环境下DataGuard主备切回过程[14:12]
1-133.13.RAC环境下DataGuard主备回切与强[13:12]

 

格式化时间

首先还是从格式化时间说起。

$cal = IntlCalendar::createInstance(IntlTimeZone::getGMT());
var_dump(get_class($cal), IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
// string(21) "IntlGregorianCalendar"
// string(66) "2020年11月18日星期三 格林尼治标准时间 上午12:58:14"

$cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin');
var_dump(get_class($cal1), IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'));
// string(21) "IntlGregorianCalendar"
// string(41) "2013 Februar 28 00:01:02 Deutschland Zeit"

IntlCalendar 类的 createInstance() 方法会返回一个 IntlCalendar 对象,它的参数是可选的,不过必须是 TimeZone 类型的参数。fromDateTime() 方法同样也是生成一个 IntlCalendar 对象,不过它可以设置一个 DateTime 对象或者日期类型的字符串为参数。

可以看到,我们返回的对象使用 get_class() 方法后看到实际返回的是一个 IntlGregorianCalendar 格林格里日历对象。这时,就可以使用 IntlDateFormatter 类的 formatObject() 方法来格式化输出内容,它是可以指定地区的,不同的地区设置就会显示不同的格式化语言结果。

返回时间戳

echo IntlCalendar::getNow(), PHP_EOL; // 1605661094417

不多做解释了,不过这个静态方法返的是带毫秒数的时间戳。

时区相关设置

只要是国际化相关的功能,都多少和时区 TimeZone 有关,日历类也不例外。

ini_set('intl.default_locale', 'de_DE');
ini_set('date.timezone', 'Europe/Berlin');
$cal = IntlCalendar::createInstance();
print_r($cal->getTimeZone());
// IntlTimeZone Object
// (
// [valid] => 1
// [id] => Europe/Berlin
// [rawOffset] => 3600000
// [currentOffset] => 3600000
// )

echo $cal->getLocale(Locale::ACTUAL_LOCALE), PHP_EOL; // de
echo $cal->getLocale(Locale::VALID_LOCALE), PHP_EOL; // de_DE