/// <summary> /// Formats a date using a .NET date format string /// </summary> /// <param name="input"></param> /// <param name="format"></param> /// <returns></returns> public static string Date(TemplateContext context, object input, string format) { if (input == null) { return(null); } if (format.IsNullOrWhiteSpace()) { return(input.ToString()); } switch (format) { case "long": //TODO: define which way to use. IMHO using modern style is more prefered //format = "%d %b %Y %X"; format = "f"; break; } var result = input.ToString(); DateTime date; var dateParsed = false; if (input.ToString().Equals("now", StringComparison.OrdinalIgnoreCase)) { date = DateTime.Now; dateParsed = true; } else if (DateTime.TryParse(input.ToString(), out date)) { dateParsed = true; } if (Regex.IsMatch(format, @"^[\w\d_\-]+$")) { var key = string.Concat("date_formats.", format); var newFormat = TranslationFilter.T(context, key); if (!newFormat.IsNullOrEmpty() && newFormat != key) { format = newFormat; } } if (dateParsed) { var themeEngine = (ShopifyLiquidThemeEngine)context.TemplateLoader; TryFormatDateTime(date, format, out result, CultureInfo.GetCultureInfo(themeEngine.WorkContext.CurrentLanguage.CultureName)); } return(result); }
public static string Date(object input, string format) { if (!string.IsNullOrEmpty(format) && !format.Contains("%")) // special formats that can be defined in settings { var key = string.Concat("date_formats.", format); var newFormat = TranslationFilter.T(key); if (newFormat != key) { format = newFormat; } if (format == "long") { format = "%d %b %Y %X"; } } return(StandardFilters.Date(input, format)); }