コミュニティアチーブメントバーを展開する。

Submissions are now open for the 2026 Adobe Experience Maker Awards

Mark Solution

この会話は、活動がないためロックされています。新しい投稿を作成してください。

解決済み

Converting String date to Date in JavaScript

Avatar

Level 4

All, 

 

I created a Javascript where I ran a xtk.QueryDef and pulled in a "Date" object.  

montezh2001_0-1642652484065.png

 

I see the @mailDate is now converted to a String. My issue is, I need to be able to use the date in an "IF-ELSE" statement, and perform calculations on the date (i.e - add months, add year, etc); I need to create a Start Date mm/dd/yyyy and End Date - mm/dd/yyyy - and then be able to compare those dates to another date field in the workflow.  

 

I've been racking my brain on trying to convert this string to Date field for me to use, and I can not seem to get it done - not with ParseInt or FormatDate (this actually looks at the string and returns the wrong date). I was trying to do the coding in a Javascript and then pass the values on to an Enrichment as an instance variable. 

 

Right now it looks like I will need to use consecutive Enrichments to get the final Start and End Dates I need; unless someone can give me some guidance on how to get this coded. 

 

Thank you

1 受け入れられたソリューション

Avatar

正解者
Employee Advisor

You need to change that string into a date before you evaluate it in the loop. What is the format of the current string?

 

Inside your for loop do something like this.

Option 1 - using vanilla JS (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse)

const myDate = Date.parse(new Date(result.@mailDate));

//then

If(myDate > date2){}

 

Option 2 - using ACC Date function

const myDate = formatDate(result.@mailDate, "%4Y/%2M/%2D")

//then

If(myDate > date2){}

https://experienceleague.adobe.com/developer/campaign-api/api/f-formatDate.html 

 

Option 3 - using moment JS (be aware library still works although it is not being investing in anymore, but it still makes it easier). This helped me when I was doing advanced date manipulation 100+ lines of JS.

https://blog.floriancourgey.com/2018/10/use-javascript-libraries-in-adobe-campaign/ 

 

I've done all 3. Which ever fits your context the best is the right one to use.

元の投稿で解決策を見る

2 返信

Avatar

Employee Advisor

Hello,

I don't know if that help, but there is some documentation about using dates in Campaign:

https://experienceleague.adobe.com/developer/campaign-api/api/p-5.html

The example says 

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) // <-- parseTimeStamp returns a Date object

https://experienceleague.adobe.com/developer/campaign-api/api/f-parseTimeStamp.html?hl=parsetimestam... 

 

Best regards, Tobias

Avatar

正解者
Employee Advisor

You need to change that string into a date before you evaluate it in the loop. What is the format of the current string?

 

Inside your for loop do something like this.

Option 1 - using vanilla JS (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse)

const myDate = Date.parse(new Date(result.@mailDate));

//then

If(myDate > date2){}

 

Option 2 - using ACC Date function

const myDate = formatDate(result.@mailDate, "%4Y/%2M/%2D")

//then

If(myDate > date2){}

https://experienceleague.adobe.com/developer/campaign-api/api/f-formatDate.html 

 

Option 3 - using moment JS (be aware library still works although it is not being investing in anymore, but it still makes it easier). This helped me when I was doing advanced date manipulation 100+ lines of JS.

https://blog.floriancourgey.com/2018/10/use-javascript-libraries-in-adobe-campaign/ 

 

I've done all 3. Which ever fits your context the best is the right one to use.