Sample code for 30+ languages & platforms
PureBasic

Get Email Date/Time

Demonstrates getting the email "Date" header field in a CkDateTime object.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkDtObj.pb"
IncludeFile "CkEmail.pb"
IncludeFile "CkDateTime.pb"

Procedure ChilkatExample()

    success.i = 0

    email.i = CkEmail::ckCreate()
    If email.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Load a .eml file into the email object.
    success = CkEmail::ckLoadEml(email,"/home/users/chilkat/eml/myEml.eml")

    dtTime.i = CkDateTime::ckCreate()
    If dtTime.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkDateTime::ckSetFromRfc822(dtTime,CkEmail::ckEmailDateStr(email))

    ; Once we have the CkDateTime object, we can get the date/time in many different formats:

    ; Get as a RFC822 GMT string:
    bLocalTime.i = 0
    Debug CkDateTime::ckGetAsRfc822(dtTime,bLocalTime)

    ; Get as an RFC822 string in the local timezone.
    ; (remember, the daylight savings that existed at the given time in the past is applied)
    bLocalTime = 1
    Debug CkDateTime::ckGetAsRfc822(dtTime,bLocalTime)

    ; Get as a 32-bit UNIX time (local or GMT..)
    ; The Unix time is number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). 
    unixTime.i = CkDateTime::ckGetAsUnixTime(dtTime,bLocalTime)
    Debug "Unix time: " + Str(unixTime)

    ; One can also get the as a "DtObj" object for accessing the individual
    ; parts of the date/time, such as month, day, year, hour, minute, etc.
    ; The DtObj can be obtained in the GMT or local timezone:
    dtObj.i = CkDtObj::ckCreate()
    If dtObj.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkDateTime::ckToDtObj(dtTime,bLocalTime,dtObj)

    If CkDateTime::ckLastMethodSuccess(dtTime) = 0
        Debug "This should never really happen!"
        CkEmail::ckDispose(email)
        CkDateTime::ckDispose(dtTime)
        CkDtObj::ckDispose(dtObj)
        ProcedureReturn
    EndIf

    Debug Str(CkDtObj::ckDay(dtObj)) + "-" + Str(CkDtObj::ckMonth(dtObj)) + "-" + Str(CkDtObj::ckYear(dtObj)) + " " + Str(CkDtObj::ckHour(dtObj)) + ":" + Str(CkDtObj::ckMinute(dtObj)) + ":" + Str(CkDtObj::ckSecond(dtObj))


    CkEmail::ckDispose(email)
    CkDateTime::ckDispose(dtTime)
    CkDtObj::ckDispose(dtObj)


    ProcedureReturn
EndProcedure