siteserver / cms

SS CMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。
https://sscms.com
GNU Affero General Public License v3.0
3.64k stars 1.2k forks source link

<stl:value type="Date" formatString="yyyy-mm-dd" ></stl:value>标签bug #1462

Open jiangbin4586 opened 5 years ago

jiangbin4586 commented 5 years ago
解析出来是 “2018年10月17日 星期三”这样子的, 这样是不符合 formatString 这个标签规则的。 既然定义了展示格式,就的按照规则来解析,BUG 求解决。
pfwu2018 commented 5 years ago

应该是yyyy-MM-dd,大小写有区别

jiangbin4586 commented 5 years ago

大写也没用啊

pfwu2018 commented 5 years ago

不应该啊

jiangbin4586 commented 5 years ago

STL在线解析 使用这个试试,反正我这边改成大写也一样,不起作用的

pfwu2018 commented 5 years ago

这个系统是c#写的,应该按照C#的时间格式啊

pfwu2018 commented 5 years ago

下面是C#中的定义啊 d 月中的某一天。一位数的日期没有前导零。   dd 月中的某一天。一位数的日期有一个前导零。   ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。   dddd 周中某天的完整名称,在 DayNames 中定义。   M 月份数字。一位数的月份没有前导零。   MM 月份数字。一位数的月份有一个前导零。   MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。   MMMM 月份的完整名称,在 MonthNames 中定义。

xjfnet commented 3 years ago

我也遇到这个问题了,顶上去,这个BUG貌似很多年了

翻了下源代码如下:

        else if (type.ToLower().Equals("Date".ToLower()))
        {
            if (!pageInfo.BodyCodes.ContainsKey("datestring.js"))
            {
                pageInfo.BodyCodes.Add("datestring.js", "<script charset=\"utf-8\" src=\"" + SiteFilesAssets.GetUrl(pageInfo.ApiUrl, "scripts/datestring.js") + "\" type=\"text/javascript\"></script>");
            }
            value = "<script language=\"javascript\" type=\"text/javascript\">RunGLNL(false);</script>";
        }

可以看到,插入了一段脚本,运行了一个函数,formatString根本不起作用

对下面这段模板代码在线解析

<stl:value type="date" formatString="yyyy"></stl:value> 

结果如下:

<script charset="utf-8" src="/sitefiles/assets/scripts/datestring.js" type="text/javascript"></script><script language="javascript" type="text/javascript">RunGLNL(false);</script> 

在控制台中直接运行 RunGLNL(false); 结果如下: 2020年8月8日 星期六 综上,时间不是C#生成的,而是js生成的,RunGLNL() 这个函数应该是生成公历或农历日期的意思,true为农历,false为公历

caojinsha commented 3 years ago

查看是否是服务器时间格式的问题。