2010-10-16 6 views
0

Je dois passer la valeur DateTime en C++. (Création d'un plugin pour AmiBroker)Date de passage en C++

Je dois le passer à AmiDate.

J'ai une date dans une variable longue. (secondes à partir de minuit le 1er janvier 1980)

La structure cible est définie comme ci-dessous.

// 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 

    }; 

Vous ne trouvez pas la moindre réponse.

+0

Quelle est votre question? – JoshD

+0

Qu'est-ce que vous voulez faire Manjoor? voulez-vous passer AmiDate à une fonction? ou voulez convertir le temps de stdlib à AmiDate? – SunnyShah

+0

Comment puis-je passer la date? – Manjoor

Répondre

1

Une option consiste à utiliser la bibliothèque de temps C ctime comme:

#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); 

Maintenant, vous pouvez extraire les composants de struct tm objet que vous venez de remplir et l'utiliser pour remplir votre objet AmiDate.

+0

Aussi google GetDateTimeArray() – Zabba

0

Je pense que vous ne pouvez pas passer n'importe quoi d'AFL à DLL en utilisant AmiDate. La structure AmiDate est utilisée en interne pour les DLL uniquement, fonctionne simplement comme GetStockArray() (également utilisé en interne dans DLL) pour récupérer O, H, L, C, V de chaque BarIndex.

Sauf qu'il decode datetime de chaque BarIndex en utilisant la fonction GetDateTimeArray()