예제 #1
0
        /// <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);
        }
예제 #2
0
        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));
        }