gpt4 book ai didi

javascript - 需要在 EXTJ 时间字段中将小时显示为 07 :00, 15 :00, 23:00(8 小时增量)

转载 作者:行者123 更新时间:2023-11-28 00:36:18 28 4
gpt4 key购买 nike

我需要在 EXTJ 时间字段中将小时显示为 07:00、15:00、23:00(8 小时增量),但是当我使用以下代码时,它没有给出所需的输出,有人可以帮助我吗,如果我遗漏了什么。

Ext.create('Ext.form.Panel', {
title: 'Time Card',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'timefield',
name: 'in',
fieldLabel: 'Time In',
format : 'H:i',
minValue: '07:00',
maxValue: '23:00',
increment: 480,
anchor: '100%'
}]
});

提前致谢。

最佳答案

您在这里遇到了一个小问题,因为时间选择器无法按照您尝试的方式工作。我会将其分解,以便您有一个想法:

1)获取24小时内的所有时间(从00点到23点)。

2) 将使用一种方法将时间从 00 推到 23,每 增量 分钟。 例如(如果您设置increment: 60,那么您将得到00:00、01:00、02:00)

3) 该数据集将返回到您的时间字段,并使用您的 minValue 和 MaxValue 对其应用过滤器

因此,如果您的设置为 480,您将得到的是:00:00,08:00,16:00。

然后应用过滤器(minValue: 07:00maxValue: 23:00)将删除第一个过滤器,留下 08:00 和 16:00 .

基本上,您想要的是第一个间隔为 7 小时,然后在第一个循环后为 8 小时,因此您需要应用如下覆盖:

**** 我还没有彻底测试过这个,所以如果你想在不同的时间间隔使用它,你可能要小心。 ***

    Ext.define('Ext.picker.override.Time',{
override: 'Ext.picker.Time',
statics: {
createStore: function(format, increment, startHour) {
var dateUtil = Ext.Date,
clearTime = dateUtil.clearTime,
initDate = this.prototype.initDate,
times = [],
min = clearTime(new Date(initDate[0], initDate[1], initDate[2])),
startHour = startHour || min,
max = dateUtil.add(clearTime(new Date(initDate[0], initDate[1], initDate[2])), 'mi', (24 * 60) - 1),
firstIncrement = startHour.getHours() * 60,
count = 0;

while(min <= max){
times.push({
disp: dateUtil.dateFormat(min, format),
date: min
});
min = dateUtil.add(min, 'mi', (count++ == 0 ? firstIncrement : increment));
}

return new Ext.data.Store({
model: Ext.picker.Time.prototype.modelType,
data: times
});
}
}
});
Ext.define('Ext.form.field.CustomTime',{
extend: 'Ext.form.field.Time',
alias: 'widget.customtimefield',
initComponent: function() {
var me = this,
min = me.minValue,
max = me.maxValue;

if (min) {
me.setMinValue(min);
}
if (max) {
me.setMaxValue(max);
}
me.displayTpl = new Ext.XTemplate(
'<tpl for=".">' +
'{[typeof values === "string" ? values : this.formatDate(values["' + me.displayField + '"])]}' +
'<tpl if="xindex < xcount">' + me.delimiter + '</tpl>' +
'</tpl>', {
formatDate: me.formatDate.bind(me)
});

// Create a store of times.
me.store = Ext.picker.Time.createStore(me.format, me.increment, me.minValue);

me.superclass.superclass.initComponent.call(this);

// Ensure time constraints are applied to the store.
// TimePicker does this on create.
me.getPicker();
}
});

Ext.create('Ext.form.Panel', {
title: 'Time Card',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [{
xtype: 'customtimefield',
name: 'in',
fieldLabel: 'Time In',
format : 'H:i',
minValue: '07:00',
maxValue: '23:00',
increment: 480,
anchor: '100%'

}]
});

fiddle :https://fiddle.sencha.com/#fiddle/i3e

关于javascript - 需要在 EXTJ 时间字段中将小时显示为 07 :00, 15 :00, 23:00(8 小时增量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28461949/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com