mirror of
https://github.com/HowardHinnant/date.git
synced 2025-08-05 05:34:27 +02:00
Updated Examples and Recipes (markdown)
@@ -312,7 +312,7 @@ This example demonstrates both some simple date arithmetic, and how to handle di
|
||||
#include <iostream>
|
||||
#include "date.h"
|
||||
#include "tz.h"
|
||||
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
@@ -320,17 +320,16 @@ This example demonstrates both some simple date arithmetic, and how to handle di
|
||||
using namespace date;
|
||||
// Dave was born April 24, 1954. 10:03 AM pst
|
||||
// Want to know when he is 2 Gigaseconds old
|
||||
auto birth = sys_days{apr/24/1954} + 10h + 3min;
|
||||
auto z = locate_zone("America/Los_Angeles");
|
||||
auto t = z->to_sys(birth);
|
||||
t += 2'000'000'000s;
|
||||
auto p = z->to_local(t);
|
||||
std::cout << p.first << ' ' << p.second << '\n';
|
||||
auto birthday = make_zoned("America/Los_Angeles", local_days{apr/24/1954} + 10h + 3min);
|
||||
std::cout << "born : " << birthday << '\n';
|
||||
birthday = birthday.get_sys_time() + 2'000'000'000s;
|
||||
std::cout << "2Gs birthday: " << birthday << '\n';
|
||||
}
|
||||
|
||||
One first creates the local time, and then converts that to UTC using the `Zone` for "America/Los_Angeles". Then add 2Gs, then convert the time from UTC back to "America/Los_Angeles". The result is a pair, with the first part holding a `time_point` and the second part holding the abbreviation for the local time. This outputs:
|
||||
One first creates the local time, and then pairs that to the time zone "America/Los_Angeles" using `make_zoned`. Then add 2Gs to the `sys_time` (not the `local_time`) of `birthday`. This outputs:
|
||||
|
||||
2017-09-08 14:36:20 PDT
|
||||
`born : 1954-04-24 10:03:00 PST`
|
||||
`2Gs birthday: 2017-09-08 14:36:20 PDT`
|
||||
|
||||
Note that without handling the timezone correctly, this result would be an hour off (2017-09-08 13:36:20) because the birth date falls in PST, and the celebration date falls in PDT.
|
||||
|
||||
|
Reference in New Issue
Block a user