私はインド株式市場の価格データを持っていますが、その日時スタンプはGMTですので、正しい日付と時刻を表すデータを扱うことができます。C++ /ブーストでdatetimeを別のタイムゾーンに変換する
自分のDB内の一部のレコードの日時を、現在のGMTからISTに変換する必要があります。
mysql> desc price_hist;
+---------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-----------------------+------+-----+---------+----------------+
| trade_id | int(11) | NO | PRI | NULL | auto_increment |
| contract_name | varchar(14) | NO | MUL | NULL | |
| trade_date | date | NO | | NULL | |
| trade_time | varchar(6) | NO | | NULL | |
| trade_price | decimal(10,4) | NO | | NULL | |
| trade_volume | bigint(20) | NO | | NULL | |
+---------------+-----------------------+------+-----+---------+----------------+
8 rows in set (0.02 sec)
私は実行することにより、DB自体にタイムゾーンを変更しようとしましたが、それはうまくいきませんでした:
select convert_tz("2010-06-30 19:00:00",'GMT','IST');
+-----------------------------------------------+
| convert_tz("2011-06-30 09:00:00",'GMT','IST') |
+-----------------------------------------------+
| NULL |
+-----------------------------------------------+
1 row in set (0.01 sec)
私が後押しする新しいですが、私は処理するためにブースト日付を使用することが示唆されていますこれはコードそのものです。
私は日時変換のためにいくつかの投稿を検索しましたが、私の特定の質問に答える投稿は見つかりませんでした。
特定のリンクがある場合、またはそれよりも優れている場合は、誰かが共有できるブーストコードの例です。これは、私のようなヌービーにとっては素晴らしいスタートです。 :-)
私は@Karisonは、次のコードを記述するために設けられた基準を使用:私は3
がまずあります見ることができるようの構文を変更し、質問を分離させ
#include "boost/date_time/local_time/local_time.hpp"
#include <iostream>
int main()
{
using namespace boost::posix_time;
using namespace boost::gregorian;
using namespace boost::local_time;
tz_database tz_db;
time_zone_ptr chi_tz=tz_db.time_zone_from_region("America/Chicago");
time_zone_ptr jst_tz(new posix_time_zone("EST+5:00:00"));
local_date_time jpn_time(date(2012,Jan,3), hours(16), jst_tz,local_date_time::NOT_DATE_TIME_ON_ERROR);
local_date_time osaka_time = jpn_time.local_time_in(chi_tz);
std::cout<<"osaka_time: "<<osaka_time<<std::endl;
return 0;
}
"EST + 15:00:00"これは意味がありません。 「EST-05:00:00」 – Karlson
はUTCに変換されます。これは返すものです。osaka_time:2012年1月3日11:00:00 UTC もちろん、この例で使用しようとしていた日本を見ると日時が間違っています – user1155299
EST + 05:00 00はUTCです。 :) – Karlson