boost::local_time::local_date_time
的构造函数要求一个 boost::posix_time::ptime
类型的对象作为其第一个参数,以及一个 boost::local_time::time_zone_ptr
类型的对象作为第二个参数。 后者只不过是 boost::shared_ptr<boost::local_time::posix_time_zone>
的类型定义。 换句话说,并不是传递一个 boost::local_time::posix_time_zone
对象,而是传递一个指向该对象的智能指针。 这样,多个 boost::local_time::local_date_time
类型的对象就可以共享时区信息。 只有当最后一个对象被销毁时,相应的表示时区的对象才会被自动释放。
在执行时,该程序将打印 2009-Jan-05 12:00:00
, 2009-Jan-05 13:00:00 CET
, 2009-Jan-05 13:00:00
和 CET
到标准输出流。 用以初始化 boost::posix_time::ptime
和 boost::local_time::local_date_time
类型的值缺省总是与 UTC 时区相关的。 只有当一个 boost::local_time::local_date_time
类型的对象被写出至标准输出流时,或者调用 local_time()
方法时,才使用时差来计算本地时间。
相比之下,localtime_in()
方法是在所传入参数的时区内解释保存在 _dt 中的时间。 这意味着 12 PM UTC 相当于 2 PM EET,即东部欧洲时间,它比 UTC 早两个小时。
boost::local_time::local_time_period
的构造函数要求两个类型为 boost::local_time::local_date_time
的参数。 和其它类型的时间区间一样,第二个参数所表示的结束时间并不包含在区间之内。 通过如 contains()
, intersection()
, 以及其它的方法,时间区间可以与其它 boost::local_time::local_time_period
相互操作。