开发者社区> 问答> 正文

如何让日期组件只显示时间而不显示年月日

同时,想让一个组件计算出两个时间区间的小时数,怎么实现

展开
收起
DRAGON 2023-11-06 11:58:59 52 0
2 条回答
写回答
取消 提交回答
  • 十年摸盘键,代码未曾试。 今日码示君,谁有上云事。

    日期组件支持默认值,设置后,在表单提交时,固定展示该默认值(设置了默认值后,也可手动选择日期)。

    路径:组件 >> 属性 >> 默认值

    注:默认值显示的是「年-月-日」,但实际在组件里面显示的内容,是以我们设置的具体格式为准。

    效果如图:

    目前日期区间组件只能精确匹配到天,如何把两个日期组件之间的差值转化为小时 请参考以下设置:

    2023-11-06 17:04:22
    赞同 2 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 Apache Flink 中,您可以使用 Java 语言编写 User Defined Function (UDF) 来实现这个需求。下面是一个简单的示例,说明如何计算两个日期之间的小时数:

    public class DateDifference extends RichFunction {
        private transient long startTimestamp;
        private transient long endTimestamp;
    
        @Override
        public void open(Configuration parameters) throws Exception {
            // 获取输入数据的格式
            final DataType inputType = getRuntimeContext().getInputType();
    
            if (inputType instanceof TimestampType) {
                // 转换为毫秒
                this.startTimestamp = ((LocalDateTime) this.getRuntimeContext().getCurrentProcessingTime()).toInstant(ZoneOffset.UTC).toEpochMilli();
                this.endTimestamp = ((LocalDateTime) this.getRuntimeContext().getCurrentWatermark()).toInstant(ZoneOffset.UTC).toEpochMilli();
            } else {
                throw new IllegalArgumentException("Invalid input type: " + inputType);
            }
        }
    
        @Override
        public Integer map(Date value) throws Exception {
            // 计算日期之间的小时数
            return (int) TimeUnit.MILLISECONDS.toHours(this.endTimestamp - this.startTimestamp);
        }
    }
    

    在这个例子中,我们首先定义了一个名为 DateDifference 的 UDF 类,它继承自 RichFunction 类。在这个类中,我们在 open() 方法中初始化了开始时间和结束时间,并在 map() 方法中计算了这两个时间之间的小时数。
    接下来,您可以将这个 UDF 注册到 Flink 程序中,并使用它来处理您的数据流。请参阅 Flink 文档以了解更多有关如何使用 UDF 的信息。

    2023-11-06 13:44:12
    赞同 展开评论 打赏
问答地址:
关联地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载