cuốn sách gpt4 ai đã làm

c++ - Ngày tăng cường thêm một ngày, chuỗi GMT không chuẩn

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 12:27:55 28 4
mua khóa gpt4 Nike

Trong C++, cách dễ nhất để thêm một ngày vào một ngày ở định dạng này là gì:

"20090629-05:57:43"

Có lẽ đang sử dụng Boost 1.36 - Tăng::ngày,Tăng cường::posix_date hoặc bất kỳ sự thúc đẩy nào khác hoặc tiêu chuẩn Chức năng thư viện, tôi không quan tâm đến các thư viện khác.

Những gì tôi đã nghĩ ra cho đến nay:

  • Định dạng chuỗi (chia phần ngày và giờ thành các thao tác chuỗi) để có thể khởi tạo boost::gregorian::date, định dạng ngày dự kiến ​​như sau:

    "2009-06-29 05:57:43"

    tôi có

    "20090629-05:57:43"

  • Thêm một ngày (tăng ngày_duration nội dung)

  • SẽChuyển đổi trở lại _simple_stringvà nối thêm phần thời gian (thao tác chuỗi)

Có cách nào dễ dàng hơn/tốt hơn để làm điều này?

Mối quan tâm của tôi là hiệu quả thời gian chạy.

Mã mẫu cho các bước trên:

sử dụng không gian tên boost::gregorian;
chuỗi gốc("20090629-05:57:43");
chuỗi dday(orig.substr(0,8));
chuỗi dtime(orig.substr(8));

ngày d(from_undelimited_string(dday));
ngày_duration dd(1);
d += đ;
kết quả chuỗi (to_iso_string(d) + dtime);

kết quả:

20090630-05:57:43

câu trả lời hay nhất

Điều này rất gần với phương pháp đơn giản nhất mà tôi biết. Cách duy nhất để đơn giản hóa hơn nữa là sử dụng giao diện cho nội dung I/O, để loại bỏ nhu cầu thao tác chuỗi:

#include 
#include
#include
#include

sử dụng không gian tên boost::local_time;

int chính() {
std::stringstream ss;
local_time_facet* out_facet = new local_time_facet();
local_time_input_facet* input_facet = new local_time_input_facet();
ss.imbue(std::locale(std::locale::classic(), out_facet));
ss.imbue(std::locale(ss.getloc(), input_facet));

local_date_time ldt(not_a_date_time);

input_facet->format("%Y%m%d-%H:%M:%S");
ss.str("20090629-05:57:43");
ss >> ldt;

out_facet->format("%Y%m%d-%H:%M:%S");
ss.str(std::string());
ss << ldt;

std::cout << ss.str() << std::endl;
}

Tuy nhiên, điều này dài hơn và được cho là khó theo dõi hơn. Tôi chưa cố gắng chứng minh điều này, nhưng tôi nghi ngờ hiệu quả thời gian chạy sẽ gần giống như vậy.

Về c++ - Ngày tăng cường thêm một ngày vào chuỗi GMT không chuẩn, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1061448/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress