0

How do I format this date like: Today, Yesterday or <date> in Telerik Kendo ASP.NET MVC grid?

columns.Bound(c => c.DesktopActivation)
                .ClientTemplate("#= DesktopActivation ? renderActivationInfo(DesktopActivation) : '<span style=\"color:\\#999999\">Unused</span>' #");

<script type="text/javascript">
   function renderActivationInfo(activationData) 
   {
      return activationData.MachineName + kendo.toString(new Date(parseInt(activationData.DateActivated.substr(6))), 'MMM d, yyyy');
   }
</script>

It seems that this C# utility method cannot be used inside the Javascript section:

    public static string GetSpecialDate(DateTime date)
    { 
        int days = ((TimeSpan)(DateTime.Now - date)).Days;

        switch(days)
        { 
            case 0:
                return "Today";
            case 1:
                return "Yesterday";
            default:
                return date.ToString("MMM dd, yyyy", CultureInfo.InvariantCulture);
        }
    }
abenci
  • 8,422
  • 19
  • 69
  • 134

1 Answers1

0

You just need to adjust your javascript function to figure out what the c# method did. This might need adjustment for your specific objects, but this will get you in the right direction:

function renderActivationInfo(activationData) 
{
    var date = kendo.parseDate(activationData.DateActivated).setHours(0, 0, 0, 0);
    var today = new Date().setHours(0, 0, 0, 0);
    var yesterday = new Date();
    yesterday = yesterday.setDate(yesterday.getDate() - 1);
    yesterday = new Date(yesterday).setHours(0, 0, 0, 0);

    if (date == today) {
        return activationData.MachineName + "Today";
    }

    if (date == yesterday) {
        return activationData.MachineName + "Yesterday";
    }

    return activationData.MachineName + kendo.toString(kendo.parseDate(activationData.DateActivated), "MMM dd, yyyy");
}