4

我已经在我们的 asp.net 应用程序中实现了 highcharts,并按照下面的带有 dateformat 属性的设置工具提示。

tooltip: {
             xDateFormat: '%d/%m/%Y %H:%M:%S' 
             //xDateFormat: '<% = _DateFormat %>'                    
          }

现在我想根据最终用户的文化设置显示它,并为此制作一个功能和属性,并按照下面的方式在页面加载中设置它

  _dateFormat = "%d/%m/%Y %H:%M:%S";// 
  //_dateFormat = General.GetUserCulture().DateTimeFormat ; how to convert to above format 

在上述情况下,我如何将文化的 datetimeformat 转换为 highchart 的 datetimeformat 字符串?

更新

对于 HighChart 以下是格式模式列表

  • %a:工作日很短,比如“周一”。
  • %A:工作日长,例如“星期一”。
  • %d:两位数的月份日期,01 到 31。
  • %e:一个月中的第几天,从 1 到 31。
  • %b:短月,如“Jan”。
  • %B:长月,例如“一月”。
  • %m:两位数的月份编号,01 到 12。
  • %y:两位数年份,如 09 表示 2009 年。
  • %Y:四位数年份,如 2009 年。
  • %H:两位数小时,24 小时格式,00 到 23。
  • %I:两位数小时,12h 格式,00 到 11。
  • %l(小写 L):12h 格式的小时,从 1 到 11。
  • %M:两位数分钟,00 到 59。
  • %p:大写 AM 或 PM。
  • %P:小写 AM 或 PM。
  • %S:两位数秒,00 到 59

因此,如果我将使用替换(根据@Ruchit 此处的答案),那么在我无法达到我的预期之后,因为如果您考虑下面的代码,那么一种格式是正确的,而另一种格式是错误的

_dateFormat = format.ShortDatePattern + " " + format.LongTimePattern;
                _dateFormat = _dateFormat.Replace("yyyy", "%Y")
                                         .Replace("yy", "%y")
                                         .Replace("MMMM", "%B")
                                         .Replace("MMM", "%b")
                                         .Replace("MM", "%m")
                                         .Replace("M", "%m")
                                         .Replace("dddd", "%A")
                                         .Replace("ddd", "%a")
                                         .Replace("dd", "%d")
                                         .Replace("HH", "%H")
                                         .Replace("mm", "%M")
                                         .Replace("ss", "%S");

所以我想为此找到适用于所有格式的通用解决方案。如果有人发现有用的东西,请帮助我!

提前致谢。

4

1 回答 1

2

您可以使用以下代码获取当前线程文化的字符串格式。

    System.Globalization.DateTimeFormatInfo format =
         System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
string strFormat = format.ShortDatePattern + " " + 
         format.ShortTimePattern;

完成此操作后,您将拥有日期时间格式字符串,例如M/d/yyyy h:mm tt. 一旦你得到这个,你可以使用字符串的替换功能。你可以使用strFormat.Replace("M","%m").Replace("d","%d")等等。
您可以在设计页面上将此变量与内联代码一起使用。

于 2012-06-27T10:43:05.113 回答