散景表中的条件DateFormatter

问题描述

我可以在Bokeh表中为日期格式化程序进行静态选择

TableColumn(field=xdata,title=xdata,formatter=DateFormatter(format="%a,%e %b %y")),

但是我想做些更动态的事情,如果距离当前时间少于几小时,则显示一天中的时间,否则显示完整的日期(天+时间)

其他问题似乎取决于条件,诸如此类,因此我找不到一个真正适合此问题的问题。

解决方法

我做这件事的丑陋JS如下

    template="""
 <%= (
         function nameless()
         { 
            function shortenDateTime(inputDate /* Date() */,threshold /*[seconds]*/) {
              function farAway(present /* integer unit epoch */,past /* integer unit epoch */) {
                if ( present - past > threshold*1000){
                  return true;
                }   else {
                  return false;
                }
              }

              // get a new date (locale machine date time)
              var now = new Date();
              var now_epoch = now.getTime();


              inputDate_epoch = inputDate.getTime();
              date = inputDate.toDateString();
              time = inputDate.toLocaleTimeString();

              if (farAway(now_epoch,inputDate_epoch)) {
                return date + ' ' + time;
              } else {
                return time;
              }
            };
            var _date = new Date(value);
            return shortenDateTime(_date)
         }()
     ) %>;
"""

然后必须从HTMLTemplateFormatter定义格式器

formater =  HTMLTemplateFormatter(template=template)

并将其用于列的定义

TableColumn(field=xdata,width=22,title=xdata,formatter=formater),

我唯一剩下的问题与:

  • 在输出;的末尾删除12:09:33;
  • 真的有必要使用我对nameless()的定义所做的技巧吗?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...