Using dates
This chapter details the functions to use for manipulating dates in the JavaScript programs executed on the server (workflow, JSSP, etc.).
Dates and time zones
In JavaScript, dates are stored un UTC. This means you only
need to worry about time zones for date construction or
conversion into text strings for internal display or storage
For date conversion, there are two function
categories:
- the functions of the JavaScript library (date.toString(), date.toLocaleString(), date.getHours(), ...),
- the functions of the Adobe Campaign platform ( formatDate(date, format) ).
Obtain current date
There are two ways of obtaining the current date in
JavaScript:
- new Date() creates a new Date object initialized with the current date. The date coincides with the time of the machine which the script is executed on.
- getCurrentDate() returns the current date based on the time of the database server.
Date display
Converting a date into a character string for display purposes uses the formatDate function.
Converting a date from an XML document
Dates stored in an XML document coming from the Adobe
Campaign database are in text form: they can be converted
using the parseTimeStamp
function.
This typically concerns XML documents returned by the
ExecuteQuery
method.
Example :
var query = NLWS.xtkQueryDef.create(
{queryDef: {schema: "nms:delivery", operation: "get",
select: {
node: {expr: "@lastModified"}
},
where: {
condition: {expr: "@id=123456"}
}
}}
)
var delivery = query.ExecuteQuery()
var lastModified = parseTimeStamp(delivery.$lastModified)
Inserting a date into an XML document
Whether to write a date in an XML attribute, to save a
document ( Write
method) or to insert a literal date into the expression of a
query, the date will have to be converted into ISO8601
format. There is a method in the xtk:shared/nl.js
function library for converting a date into this format: the
NL.XTK.formatDateTime(date) method.
The library can be loaded using the loadLibrary
function:
loadLibrary("xtk:shared/nl.js")
or using the page directive in case of a dynamic
JavaScript page (JSSP):
<%@ page import="xtk:shared/nl.js" %>
Warning: you cannot use loadLibrary for all
scripts. For instance, you can't change a library of
JavaScript functions in an email personalization script.
Example :
This example shows the construction of a query using a
literal date.
loadLibrary("xtk:shared/nl.js")
NL.require('/nl/core/shared/xtk.js')
...
var date = ...
var query = NLWS.xtkQueryDef.create(
{queryDef: {schema: "nms:delivery", operation: "select",
select: {
node: {expr: "@id"}
},
where: {
condition: {expr: "@lastModified > #" + NL.XTK.formatDateTime(date) + "#"}
}
}})
var result = query.ExecuteQuery()