2011-10-26 39 views
5

Bất kỳ ai biết cách tải định dạng ngày đơn giản từ tăng thời gian hiện tại sang hệ thống cục bộ?Tăng thời gian ngày có thể đọc được của con người bây giờ

boost::posix_time::ptime now = boost::posix_time::second_clock::universal_time(); 
boost::posix_time::time_facet *facet = new boost::posix_time::time_facet("%d-%m-%Y %H:%M:%S"); 

Tôi đã xem các ví dụ sử dụng cout.imbue nhưng tôi chỉ muốn một chuỗi đơn giản.

Trả lời

6

bạn có thể thử mã này:

void FormatDateTime(
    std::string const&    format, 
    boost::posix_time::ptime const& date_time, 
    std::string&     result) 
    { 
    boost::posix_time::time_facet * facet = 
     new boost::posix_time::time_facet(format.c_str()); 
    std::ostringstream stream; 
    stream.imbue(std::locale(stream.getloc(), facet)); 
    stream << date_time; 
    result = stream.str(); 
    } 

Đặt định dạng để "%d-%m-%Y %H:%M:%S" hoặc bất cứ khía cạnh nào bạn muốn.

Đối với giờ địa phương, sử dụng boost::posix_time::second_clock::local_time() làm đối số thứ hai (date_time).

+0

Đây không phải là cụ thể cho các máy tính cục bộ ... tôi cần đẩy mạnh :: posix_time :: ptime bây giờ = boost :: posix_time :: second_clock :: local_time(); – Bluebaron

+0

Mọi thứ khác đều tốt. – Bluebaron

+0

không tạo ra một khía cạnh mới và imbueing nó mỗi khi chức năng này được gọi là gây ra rất nhiều chi phí? – rve

3

Tôi biết đó là quá muộn nhưng đối với người tìm kiếm như tôi:

#include <boost/format.hpp> 

const boost::posix_time::ptime now = boost::posix_time::second_clock::local_time(); 

const boost::wformat f = boost::wformat(L"%02d.%02d.%s %02d:%02d") 
       % now.date().year_month_day().dayas_number() 
       % now.date().year_month_day().month.as_number() 
       % now.date().year_month_day().year 
       % now.time_of_day().hours() 
       % now.time_of_day().minutes(); 

const std::wstring result = f.str(); // "21.06.2013 14:38" 
+0

nó phải là day.as_number(). không thể chỉnh sửa vì giới hạn 6 ký tự. –

+0

Tôi đã kiểm tra mã và năm không phải lúc nào cũng được định dạng chính xác. Đôi khi năm có dấu phẩy (2.017.01.11-16: 18: 01), đôi khi không (2017.01.11-16: 18: 01), được thử nghiệm trên Mac OS. Điều này std :: to_wstring (now.date(). Year_month_day(). Năm) đã giúp. – MPeli

Các vấn đề liên quan