เพื่อส่วนใหญ่อย่างง่ายดายพาเข้าไปในบัญชีผู้ใช้คนชดเชย UTC สนาม C++20 <chrono>
คือหนทางที่ถูกต้องนะ ถ้าคุณมี C++11/14/17 มีอยู่ก่อนเป็ นอิสระเปิดแหล่งข่าวของส่วนหัวอย่างเดียวตัวอย่าง ของส่วนนี้ของภาษา C++language 20 ที่สามารถจะใช้ได้ และมันได้ผลกับทั้งระบบลินุกซ์และหน้าต่าง ถ้าคุณกำลังใช้ซีนี่เรื่องง่ายแก้ปัญหายังไม่มีอยู่
#include <chrono>
#include <iostream>
#include <sstream>
int
main()
{
using namespace std;
using namespace std::chrono;
string string1 = "1997-07-16T19:20:30+01:00";
string string2 = "2000-07-17T20:20:30+01:00";
sys_seconds t1, t2;
string format = "%FT%T%Ez";
istringstream in{string1};
in.exceptions(ios::failbit);
in >> parse(format, t1);
in.clear();
in.str(string2);
in >> parse(format, t2);
if (t1 > t2)
cout << string1 << " is later than " << string2 << '\n';
else if (t2 > t1)
cout << string2 << " is later than " << string1 << '\n';
else
cout << string1 << " is the same time as " << string2 << '\n';
}
อยู่เหนือคือ C++20 ทางออกหรอกนะ
คนประเภท sys_seconds
เป็นวินาที-ความแม่นยำ UTC นทึกเวลา. เมื่อเรื่องนี้ต่างๆที่วิเคราะห์ไปกับ parse
ที่เวลาต่างๆที่วิเคราะห์ถือว่าเป็นที่เวลาท้องถิ่นและแก้ไขโดยการต่างๆที่วิเคราะห์ชดเชย UTC ก่อนถูกรับมอบหมายให้มาทำข่าว sys_seconds
เถียงกันอยู่นะ คน E
ตัวแปลงอยู่ %Ez
ไม่สั่ parse
ต้องมองหาคนที่ :
ในช่วงเวลา. %z
(ไม่มี E
ดูเป็นช่วงเวลาของรูปแบบ hhmm
.
ผมตั้ง failbit
อยู่ในสายข้อมูลดังนั้นมีการวิเคราะห์ข้อผิดพลาดถูกส่งเสียงก็ข้อยกเว้น ถ้าลูกอยากตรวจหา in.fail()
ด้วยตนเอง,ไม่เติมการตั้งค่า failbit
.
ครั้งนึง t1
แล้ว t2
พต่างๆที่วิเคราะห์ในพวกเขาจะได้เปรียบเทียบเหมือนรวมอัตโนมัติประเภท.
ถ้าคุณต้องการเพื่อใช้ เป็นอิสระเปิดแหล่งข่าวของส่วนหัวอย่างเดียวตัวอย่าง,แค่เพิ่ม #include "date/date.h"
แล้ว using namespace date;
เพื่อที่อยู่เหนือโปรแกรม
ถ้าคุณสามารถเป็นระองค์มั่นใจได้ว่า\ค UTC แบมันเท่าเทียมกันจากนั้นก็ง่ายอย่างข้อความเปรียบเทียบเป็นเพียงพ:
if (string1 > string2)
cout << string1 << " is later than " << string2 << '\n';
else if (string2 > string1)
cout << string2 << " is later than " << string1 << '\n';
else
cout << string1 << " is the same time as " << string2 << '\n';
ใน C(และถ้า UTC แบสามารถจะเปลี่ยนแปล),คุณจะต้องการวิเคราะห์ในแบและลบมันออกมาจากท้องถิ่นครั้งด้วยตัวคุณเองก่อน