Expand my Community achievements bar.

Adobe Campaign User Groups are live now. Join our Adobe Campaign User Groups and connect with your local leaders!
SOLVED

Dynamic date in email body

Avatar

Level 3

I'm trying to display dynamic date in email body. I was able to get dynamic date as per below --

 

<%
function daysInMonth(today) {
     return new Date(today.getFullYear(), today.getMonth()+1, 0).getDate();
}
var today = new Date();
%>

<%= daysInMonth(today) %> <%= formatDate (today, "%Bl") %>

 

I want to display the day before the 2nd Thursday of every month. I'm not sure how to do that in ACM.

 

I was able to display this on webpage in a simple javascript.

 

Can anyone please help me ?

 

Thanks.

1 Accepted Solution

Avatar

Correct answer by
Level 3

Yes, I meant to ask how to get 2nd Thursday of every month using JS inside a delivery. I have found the solution and tested it as well.

 

For anyone's reference, below can be used:

 

<%
var ordinal = 2, weekday = 'Thu';
var today = new Date();
var d = new Date(today.getUTCFullYear(), today.getUTCMonth()+1, 1);
d.setUTCHours(0, 0, 0, 0);
var dayofWeek = 4;
var ORDINALCONST = 7 * ordinal + dayofWeek - d.getUTCDay() - (d.getUTCDay() <= dayofWeek ? 7 : 0);
d.setUTCDate(d.getUTCDate() + ORDINALCONST);
%> <%= d.getDate() - 1  %> <%= formatDate (d, "%Bl %4Y") %>

I wanted to have a day before 2nd Thursday of next month and above code worked

View solution in original post

4 Replies

Avatar

Level 3

Hey Vinay - I would probably try and get this working by using a javascript activity in the workflow to execute the script and store the output in a variable. 

Info on variables - you probably want to look at an instance variable: https://experienceleague.adobe.com/docs/campaign-classic/using/automating-with-workflows/advanced-ma... 

You can then pass this to be used in the email: https://blog.floriancourgey.com/2018/05/how-to-add-variables-from-a-workflow-in-a-delivery 

Avatar

Level 3

Hi

Thank you for reply. This will be lengthy and tricky solution. Isn't there any solution like getting current date? and then we can make necessary changes to manipulate result ?

Avatar

Level 2

Hi @vinay16,
The script you mentioned can be used inside a delivery. Is your question related to how to get the  2nd Thursday of every month or how to use the JS code in a delivery?

Avatar

Correct answer by
Level 3

Yes, I meant to ask how to get 2nd Thursday of every month using JS inside a delivery. I have found the solution and tested it as well.

 

For anyone's reference, below can be used:

 

<%
var ordinal = 2, weekday = 'Thu';
var today = new Date();
var d = new Date(today.getUTCFullYear(), today.getUTCMonth()+1, 1);
d.setUTCHours(0, 0, 0, 0);
var dayofWeek = 4;
var ORDINALCONST = 7 * ordinal + dayofWeek - d.getUTCDay() - (d.getUTCDay() <= dayofWeek ? 7 : 0);
d.setUTCDate(d.getUTCDate() + ORDINALCONST);
%> <%= d.getDate() - 1  %> <%= formatDate (d, "%Bl %4Y") %>

I wanted to have a day before 2nd Thursday of next month and above code worked