मैं बढ़ावा पर इस पाया मेलिंग सूची के लिए प्रतिबद्ध: http://lists.boost.org/boost-commit/2009/04/15209.php
यहाँ कर रहे हैं प्रासंगिक कार्य:
template < class Clock, class Duration>
struct convert_to<posix_time::ptime, chrono::time_point<Clock, Duration> > {
inline static posix_time::ptime apply(const chrono::time_point<Clock, Duration>& from)
{
typedef chrono::time_point<Clock, Duration> time_point_t;
typedef chrono::nanoseconds duration_t;
typedef duration_t::rep rep_t;
rep_t d = chrono::duration_cast<duration_t>(from.time_since_epoch()).count();
rep_t sec = d/1000000000;
rep_t nsec = d%1000000000;
return boost::posix_time::from_time_t(0)+
boost::posix_time::seconds(static_cast<long>(sec))+
#ifdef BOOST_DATE_TIME_HAS_NANOSECONDS
boost::posix_time::nanoseconds(nsec);
#else
boost::posix_time::microseconds((nsec+500)/1000);
#endif
}
};
template < class Clock, class Duration>
struct convert_to<chrono::time_point<Clock, Duration>, posix_time::ptime> {
inline static chrono::time_point<Clock, Duration> apply(const posix_time::ptime& from)
{
boost::posix_time::time_duration const time_since_epoch=from-boost::posix_time::from_time_t(0);
chrono::time_point<Clock, Duration> t=chrono::system_clock::from_time_t(time_since_epoch.total_seconds());
long nsec=time_since_epoch.fractional_seconds()*(1000000000/time_since_epoch.ticks_per_second());
return t+chrono::nanoseconds(nsec);
}
};
मुझे यकीन है कि जब वे एक बढ़ावा रिहाई का हिस्सा बनने के लिए जा रहे हैं नहीं कर रहा हूँ। वे अभी ट्रस्ट ट्रंक में नहीं लग रहे हैं ...
अच्छा खोज। ये कार्य मानते हैं कि क्लॉक का युग पीटाइम: न्यू इयर्स, 1 9 70 जैसा ही है। अगर यह धारणा सच है, तो ये कार्य काम करते हैं। यदि नहीं, तो ये फ़ंक्शन एक मूक रन टाइम त्रुटि हैं। –
क्या युग अलग-अलग हैं, भले ही इन कार्यों को सही ढंग से कार्यान्वित करना संभव हो? – HighCommander4
मेरा मानना है कि आप बहुत करीब आ सकते हैं। मैं पहले एक कस्टम chrono :: घड़ी (नामस्थान chrono होने की आवश्यकता नहीं है) है कि नए साल, 1 9 70 का एक युग है। ऊपर वर्णित अनुसार पीटा और अपने नए घड़ी के बीच कनवर्ट करें। और फिर आप उनमें से प्रत्येक से() एक के बाद एक दाएं) प्राप्त करके अपने दो chrono घड़ियों के बीच लगभग रूपांतरित कर सकते हैं। प्रत्येक समय_पॉइंट के time_since_epoch() को एक अवधि प्राप्त करने के लिए घटाएं जो आपके दो क्रोनो घड़ियों के युगों के बीच अंतर है। आप दो chrono time_points के बीच कनवर्ट करने के लिए उस अंतर को जोड़/घटाएं। –