2010-10-16 70 views
0

我需要在C++中傳遞DateTime值。 (創建一個插件AmiBroker在C++中傳遞日期

我必須將它傳遞到AmiDate

我有長變量的日期。 (從1980年1月1日午夜起的秒數)

目標結構定義如下。

// 8 byte (64 bit) date time stamp 
    union AmiDate 
    { 
    DATE_TIME_INT Date; 
    struct PackedDate PackDate; 
    }; 

struct PackedDate { 
// lower 32 bits 
unsigned int IsFuturePad:1; // bit marking "future data" 
unsigned int Reserved:5; // reserved set to zero 
unsigned int MicroSec:10; // microseconds 0..999 
unsigned int MilliSec:10; // milliseconds 0..999 
unsigned int Second: 6; // 0..59 

// higher 32 bits 
    unsigned int Minute : 6; // 0..59  63 is reserved as EOD marker 
    unsigned int Hour : 5;  // 0..23  31 is reserved as EOD marker 
    unsigned int Day : 5;  // 1..31 
    unsigned int Month : 4;  // 1..12 
    unsigned int Year : 12; // 0..4095 

    }; 

沒有找到線索。

+0

什麼是你的問題,它解碼日期時間? – JoshD 2010-10-16 06:13:06

+0

你想做什麼Manjoor?想要將AmiDate傳遞給一些函數?或者想將某些stdlib的時間轉換爲AmiDate? – SunnyShah 2010-10-16 06:19:34

+0

我怎麼能通過日期? – Manjoor 2010-10-16 06:20:05

回答

1

一種選擇是利用C時間庫ctime爲:

#include <ctime> 

time_t numSeconds = /* your value */; 

// this structure contains the broken down components of the time. 
struct tm * timeinfo; 

// fill in the struct by calling localtime. 
timeinfo = localtime (&numSeconds); 

現在,您可以提取struct tm對象,您剛剛填寫的組成部分,並用它來填補你的AmiDate對象。

+0

也谷歌GetDateTimeArray() – Zabba 2010-10-16 06:36:14

0

我想你不能通過AmiDate將任何東西從AFL傳遞給DLL。只需像GetStockArray()(也在DLL中內部使用)函數來檢索每個BarIndex的O,H,L,C和V,就可以在內部使用AmiDate結構。

除了每個BarIndex使用GetDateTimeArray()函數