Date Formatting in HTML Template usign razor

Hi All,

I'm working on our HTML email ticket template.

I've made a copy of the Mobile Ticket template and have been able to make the changes that I need except for the date format.

The current format is YYYY-MM-DD which isn't the most user friendly, so I'm trying to change it to dd MMM yyyy  (e.g. 31 Dec 2020).

I've managed to convert the performanceDate var to a DateTime as follows:

DateTime date2 = ((DateTime)DateTime.ParseExact(performanceDate, "yyyy-MM-dd", null));
performanceDate = date2.ToShortDateString();

However, the only function available on the date2 is "ToShortDateString()".

My web research suggests there should be a ToString("dd MMM yyyy") that I can use, but this doesn't work and intelisense doesn't have ToString() for my date var.

Any ideas on how to format this date?

Many thanks,

Parents
  • Hi Dara,

    I was able to use ToString with the following tweak to your date2 variable:

            var date2 = DateTime.ParseExact(performanceDate, "yyyy-MM-dd", null);
            var performanceDate = date2.ToString("dd MMM yyyy");

  • Thanks Thomas.

    I tried that but unfortunately, it throws an error when I click 'View Tickets' on the website.

    The following is the error:

    Rest Exception: BadRequest Description: An error occurred while rendering the template. Object reference not set to an instance of an object.

    Response Body: [ { "Code": "", "Description": "An error occurred while rendering the template.\r\n\r\nObject reference not set to an instance of an object.", "Details": " at Tessitura.Service.Impl.Templates.TemplateRenderer.RenderTemplate[T](String template, T model, String cacheKey)\r\n at Tessitura.Service.Impl.Templates.TemplateService.RenderConstituentInfo(String constituentId, String templateBody, List`1 nameValues, String cacheKey)\r\n at

    .....

    If it works for you, but gives an error for me, I wonder if it's due to the difference in date formatting I have here in Ireland vs US date format.

  • I got it working Slight smile.

    Seemed to need a combination of both my first method and your suggestion Thomas.

    The following is the code that worked for me, just in case anyone else on this side of the pond needs this for their mobile ticket:

    DateTime date2 = ((DateTime)DateTime.ParseExact(performanceDate, "yyyy-MM-dd", null));
    performanceDate = date2.ToString("ddd dd MMM yyyy");
    Thanks again Thomas for your help.
    cheers,
    Dara
Reply Children
No Data