Velocity script token in friendly date format | Community
Skip to main content
Level 2
January 29, 2021
Solved

Velocity script token in friendly date format

  • January 29, 2021
  • 1 reply
  • 4768 views

I have a velocity script token in my email to add 30 days from today's date with a "friendly" date format: "Feb 25, 2021"

I also directly include a Date field using its {{lead.token}}: {{lead.Membership End Date:default=end date}}. However, that output is of course not in a "friendly" date format, but in the default system format "2021-01-22".

 

Sample email copy: 

Your membership expired on 2022-01-22; however, if you renew before Feb 25, 2021 we'll be happy to extend your renewal rate.

 

I know I need to use Velocity to output the Membership End Date instead of using the {{lead.token}} directly but how do I format that field?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by SanfordWhiteman

Assuming your Membership End Date field's Velocity name is $lead.MembershipEndDate (you'll know the real name when you check the field name off in the tree in Script Editor, it's not something we can 100% predict):

 

## standard Velocity date/time includes #set( $defaultTimeZone = $date.getTimeZone().getTimeZone("America/New_York") ) #set( $defaultLocale = $date.getLocale() ) #set( $calNow = $date.getCalendar() ) #set( $ret = $calNow.setTimeZone($defaultTimeZone) ) #set( $calConst = $field.in($calNow) ) #set( $ISO8601DateOnly = "yyyy-MM-dd" ) #set( $ISO8601DateTime = "yyyy-MM-dd'T'HH:mm:ss" ) #set( $ISO8601DateTimeWithSpace = "yyyy-MM-dd HH:mm:ss" ) #set( $ISO8601DateTimeWithMillisUTC = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" ) ## your business-specific friendly date format #set( $FORMAT_FRIENDLY_DATE_ONLY = "MMM dd, yyyy" ) ## cast date-like String to Date #set( $MembershipEndDate = $convert.parseDate( $lead.MembershipEndDate, $ISO8601DateOnly, $defaultLocale, $defaultTimeZone ) ) ## output in format ${date.format($FORMAT_FRIENDLY_DATE_ONLY,$MembershipEndDate,$defaultLocale,$defaultTimeZone)}

 

1 reply

SanfordWhiteman
SanfordWhitemanAccepted solution
Level 10
January 29, 2021

Assuming your Membership End Date field's Velocity name is $lead.MembershipEndDate (you'll know the real name when you check the field name off in the tree in Script Editor, it's not something we can 100% predict):

 

## standard Velocity date/time includes #set( $defaultTimeZone = $date.getTimeZone().getTimeZone("America/New_York") ) #set( $defaultLocale = $date.getLocale() ) #set( $calNow = $date.getCalendar() ) #set( $ret = $calNow.setTimeZone($defaultTimeZone) ) #set( $calConst = $field.in($calNow) ) #set( $ISO8601DateOnly = "yyyy-MM-dd" ) #set( $ISO8601DateTime = "yyyy-MM-dd'T'HH:mm:ss" ) #set( $ISO8601DateTimeWithSpace = "yyyy-MM-dd HH:mm:ss" ) #set( $ISO8601DateTimeWithMillisUTC = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" ) ## your business-specific friendly date format #set( $FORMAT_FRIENDLY_DATE_ONLY = "MMM dd, yyyy" ) ## cast date-like String to Date #set( $MembershipEndDate = $convert.parseDate( $lead.MembershipEndDate, $ISO8601DateOnly, $defaultLocale, $defaultTimeZone ) ) ## output in format ${date.format($FORMAT_FRIENDLY_DATE_ONLY,$MembershipEndDate,$defaultLocale,$defaultTimeZone)}

 

Level 2
March 11, 2021

Hi Sanford,

 

Thank you for providing this script it is really helpful! I am having one issue though that maybe you can shed some light on.

 

I am using the scrip almost identically as you have posted it, the only difference being that I am displaying and formatting the time as well. The issue that I'm having is that 2 hours are being added to the time when output from script token. When I view the data in Marketo I see the correct date/time originally submitted from my form, but after I format the date within my email the time has two hours added to it every time.

 

 

 

## standard Velocity date/time includes #set( $defaultTimeZone = $date.getTimeZone().getTimeZone("America/New_York") ) #set( $defaultLocale = $date.getLocale() ) #set( $calNow = $date.getCalendar() ) #set( $ret = $calNow.setTimeZone($defaultTimeZone) ) #set( $calConst = $field.in($calNow) ) #set( $ISO8601DateOnly = "yyyy-MM-dd" ) #set( $ISO8601DateTime = "yyyy-MM-dd'T'HH:mm:ss" ) #set( $ISO8601DateTimeWithSpace = "yyyy-MM-dd HH:mm:ss" ) #set( $ISO8601DateTimeWithMillisUTC = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" ) ## your business-specific friendly date format #set( $FORMAT_FRIENDLY_DATE_ONLY = "MMMM dd, yyyy h':'mm a" ) ## cast date-like String to Date #set( $requestMeetingDate = $convert.parseDate( $member.requestMeetingDate, $ISO8601DateTime, $defaultLocale, $defaultTimeZone ) ) ## output in format ${date.format($FORMAT_FRIENDLY_DATE_ONLY,$requestMeetingDate,$defaultLocale,$defaultTimeZone)}

 

 

 

Kevin

SanfordWhiteman
Level 10
March 11, 2021

Can you print the raw output of

$member.requestMeetingDate

?