Skip to content

Latest commit

 

History

History
90 lines (65 loc) · 2.25 KB

File metadata and controls

90 lines (65 loc) · 2.25 KB

日期字段

日期字段将字符串存储为 its value,将字符串存储为 its text。它valuetext两者都具有格式YYYY-MM-DD

日期字段

编辑器打开的日期字段

折叠块上的日期字段

:::warning 警告:日期字段不再是核心 Blockly 库的一部分。我们现在将其发布为名为@blockly/field-date 的 npm 包 :::

创建

::::tabs ::: tab JSON

{
  "type": "example_date",
  "message0": "date: %1",
  "args0": [
    {
      "type": "field_date",
      "name": "FIELDNAME",
      "date": "2020-02-20"
    }
  ]
}

::: ::: tab JavaScript

Blockly.Blocks['example_date'] = {
  init: function() {
    this.appendDummyInput()
      .appendField('date:')
      .appendField(new Blockly.FieldDate('2020-02-20'), 'FIELDNAME');
  }
};

::: ::::

日期字段构造函数接受一个可选的value和一个可选的 校验器value应该是格式中的字符串YYYY-MM-DD。否则将使用当前(今天)日期。

序列化和 XML

日期字段的 XML 如下所示:

<field name="FIELDNAME">2020-02-20</field>

field节点的属性name包含引用日期字段的字符串,节点的内部文本是应用于该字段的值。内部文本值遵循与构造函数值相同的规则。

创建日期验证器

::: tip 注意: 有关验证器的一般信息,请参阅验证器。 :::

日期字段的值是YYYY-MM-DD格式字符串,因此任何验证器都必须接受YYYY-MM-DD格式字符串,并返回YYYY-MM-DD格式字符串null、 或undefined

请注意,在验证日期时,使用 Closure 的日期类可能会有用 (打开新窗口).

下面是一个只接受工作日的验证器示例:

function(newValue) {
  var date = goog.date.Date.fromIsoString(newValue);
  var weekday = date.getWeekday();
  if (weekday == 0 || weekday == 6) {
    return null;
  }
  return date.toIsoString(true);
}