DataTplCalcDateTime.vb
''
'' This code is part of Document Solutions for Word demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.Globalization
Imports GrapeCity.Documents.Word

'' This example demonstrates the available date and time functions
'' that can be used with the 'calc' report templates feature.
Public Class DataTplCalcDateTime
    Function CreateDocx() As GcWordDocument
        '' Dummy data source (the date/time functions shown in this example do not need the data):
        Dim data = {123}

        Dim doc = New GcWordDocument()

        '' Add the data source:
        doc.DataTemplate.DataSources.Add("ds", data)

        '' Styles and templates to show results:
        Dim bulletListTemplate = doc.ListTemplates.Add(BuiltInListTemplateId.BulletDefault, "bulletListTemplate")
        Dim exStyle = doc.Styles(BuiltInStyleId.Heading3)
        Dim resStyle = doc.Styles(BuiltInStyleId.Strong)

        Dim paras = doc.Body.Paragraphs
        Dim add As Action(Of String) =
            Sub(expr)
                '' Four zero-width spaces are inserted after the opening brace to prevent template expansion:
                paras.Add(expr.Insert(1, New String(ChrW(&H200B), 4)) + " :  ", exStyle).ListFormat.Template = bulletListTemplate
                paras.Last.GetRange().Runs.Add(expr, resStyle)
            End Sub

        add("{{ calc Now() }}")
        add("{{ calc Today() }}")
        add("{{ calc UtcNow() }}")

        add("{{ calc AddTicks(Now(), 100) }}")
        add("{{ calc AddMilliSeconds(Now(), 60 * 1000) }}")
        add("{{ calc AddSeconds(Now(), 60) }}")
        add("{{ calc AddMinutes(Now(), 1) }}")
        add("{{ calc AddHours(Now(), 2) }}")

        add("{{ calc AddDays(Today(), 7) }}")
        add("{{ calc AddMonths(Today(), 4) }}")
        add("{{ calc AddYears(Today(), 10) }}")

        add("{{ calc DateDiffTick(""1-Jan-2001"", Today()) }}")
        add("{{ calc DateDiffMilliSecond(Today(), Now()) }}")
        add("{{ calc DateDiffSecond(Today(), Now()) }}")
        add("{{ calc DateDiffMinute(Today(), Now()) }}")
        add("{{ calc DateDiffHour(Today(), Now()) }}")
        add("{{ calc DateDiffDay(""1-Jan-2001"", Today()) }}")

        add("{{ calc GetTimeOfDay(Now()) }}")
        add("{{ calc GetMilliSecond(Now()) }}")
        add("{{ calc GetSecond(Now()) }}")
        add("{{ calc GetMinute(Now()) }}")
        add("{{ calc GetHour(Now()) }}")

        add("{{ calc GetDate(Now()) }}")
        add("{{ calc GetDayOfWeek(Now()) }}")
        add("{{ calc GetDay(Now()) }}")
        add("{{ calc GetDayOfYear(Now()) }}")
        add("{{ calc GetMonth(Now()) }}")
        add("{{ calc GetYear(Now()) }}")

        '' Process the templates:
        doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US"))

        '' Add a short note describing the demo at the top of the document:
        paras.Insert(
            "This example demonstrates the available date and time functions " +
            "that can be used with the 'calc' report templates feature. " +
            "Please see this example's source code for full details.",
            InsertLocation.Start)
        paras.Insert("Report templates: available calc date/time functions", doc.Styles(BuiltInStyleId.Heading1), InsertLocation.Start)

        '' Done:
        Return doc
    End Function
End Class