Sample code for 30+ languages & platforms
PureBasic

Compute Difference Between Two DateTime Strings

Demonstrates how to compute the difference between two datetime strings.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkDateTime.pb"

Procedure ChilkatExample()

    ; Imagine we have these strings:

    t1.s = "2022-11-14 15:45:38"
    t2.s = "2022-11-16 17:23:41"

    ; How many minutes are between the two?

    ; First, we'd want load each date/time into a Chilkat CkDateTime object.
    ; In this case, there are no CkDateTime methods that accept the above format.
    ; However.. the CkDateTime's SetFromTimestamp will accept a date in the format "YYYY-MM-DDThh:mm:ssZ"

    ; First modify the above dates to the timestamp format.
    sb1.i = CkStringBuilder::ckCreate()
    If sb1.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkStringBuilder::ckAppend(sb1,t1)
    count.i = CkStringBuilder::ckReplace(sb1," ","T")
    CkStringBuilder::ckAppend(sb1,"Z")

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

    CkStringBuilder::ckAppend(sb2,t2)
    count = CkStringBuilder::ckReplace(sb2," ","T")
    CkStringBuilder::ckAppend(sb2,"Z")

    ; Load each into a CkDateTime
    dt1.i = CkDateTime::ckCreate()
    If dt1.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkDateTime::ckSetFromTimestamp(dt1,CkStringBuilder::ckGetAsString(sb1))
    ; verify...
    Debug CkDateTime::ckGetAsTimestamp(dt1,0)

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

    CkDateTime::ckSetFromTimestamp(dt2,CkStringBuilder::ckGetAsString(sb2))
    ; verify...
    Debug CkDateTime::ckGetAsTimestamp(dt2,0)

    ; Get the difference in seconds
    diffSeconds.i = CkDateTime::ckDiffSeconds(dt2,dt1)
    Debug "Difference in seconds: " + Str(diffSeconds)
    Debug "Difference in minutes: " + Str(diffSeconds / 60)


    CkStringBuilder::ckDispose(sb1)
    CkStringBuilder::ckDispose(sb2)
    CkDateTime::ckDispose(dt1)
    CkDateTime::ckDispose(dt2)


    ProcedureReturn
EndProcedure