Dynamics NAV HOW TO Microsoft

Working with dates in NAV

To work following the standards avoids future issues.

In this post I’d like to suggest a way to convert dates in NAV.

Working with dates in NAV

A date in your system can have different formats depending on the preferences of your country and language.

You can come across different errors, for example Server and Client with different settings or ambiguous date because valid between two different formats (e.g. 05/04/2015 that could be DD/MM/YYYY or MM/DD/YYYY)

To avoid this confusion there is an International Standard that is the standard XML format that returns the date in the following format


In NAV you can use the FORMAT Function (Code, Text) with the following declaration:

String := FORMAT(Value[, Length][, FormatStr/FormatNumber])

and using the FormatStr = 9 to return a string in XML format

[sourcecode lang=”Cside”]FORMAT(varDate,0,9);[/sourcecode]

Note: Leaving the Length = 0 then the entire value is returned.

This example requires that you create the following variables:

Name DataType Subtype
varDate Date

[sourcecode lang=”Cside”]
varDate := DMY2DATE(5,4,2015);

It will return
Working with dates in NAV

How to convert from a string in XML format back to a field or variable of type Date?

To convert a string in a date in NAV we need to call the EVALUATE Function with the following declaration:

[Ok :=] EVALUATE(Variable, String[, Number])

It’s interesting that also in this function we can use Number = 9 to set that the string expected will be in XML format.

Using the standard XML format you will work in accordance to the standards and the configuration of your Server or Client, language or preference in your system will not affect your work and each date will be converted always in the same manner.

Remind that you can use the same functions and logic working with DateTime.

Did my post help you? Leave a reply.

7.0 7.5 C#.NET HOW TO Microsoft SDK 7.1 VB.NET Visual Studio Windows Mobile Windows Phone

HOW TO add weeks to Date or DateTime

The Date and DateTime structures have the following methods:
AddYears(), AddMonths(), AddDays() but NOT AddWeeks() so you could use AddDays() to add the number of days of the week for each week or simply Add() to add TimeSpan, these aren’t professional solutions.

Use AddWeeks() method of Calendar class:

[sourcecode lang=”vb”]
Imports System.Globalization

Dim cal As New Calendar

Dim newDate as Date = cal.AddWeeks(myDateTime, 1).Date
Dim newDateTime as DateTime = cal.AddWeeks(myDateTime, 1)

Also, you can use specific calendar changing Calendar class with others: GregorianCalendar, JapaneseCalendar, etc.
To read the complete list System.Globalization Namespace

Did my HOW TO help you? Leave a reply.