小时、分钟、秒分隔显示为下划线而不是冒号

hours, minutes seconds separation showing as underscore instead of colon

我正在使用 moment.js 获取当前日期和时间,我正在尝试将其格式化为以下格式

'MMMM Do YYYY, h:mm:ss a'

但这里的问题是小时、分钟和秒之间的分隔显示为下划线而不是冒号。这就是我实现它的方式。

download() {
  var url = OFFERS_URL + '?';
  this.$axios.get(url, responseType: 'blob' })
  .then(response => {
    var file = new Blob([response.data]);
    FileSaver.saveAs(file, 'Offers ' + moment().format('MMMM Do YYYY, h:mm:ss a') + '.xls');
  });
}

下载的文件名显示为

Offers April 20th 2021, 1_26_59 PM 

但应该是

Offers April 20th 2021, 1:26:59 PM

您可以将此格式用于文件名的日期部分:

moment().format('DD-YYYY-MM_hh-mm-ss-a')

根据 IBM 关于 OS 的文件命名约定(参见参考资料 https://www.ibm.com/docs/en/aix/7.1?topic=files-file-naming-conventions

每个文件的名称在其存储目录中必须是唯一的。这样可以确保该文件在文件系统中也具有唯一的路径名。

文件命名准则是:

  • 文件名最长可达 255 个字符,可以包含字母、 数字和下划线。
  • 操作系统是区分大小写的,也就是说区分大小写 文件名中的大写字母和小写字母之间。所以, FILEA、FiLea 和 filea 是三个不同的文件名,即使它们 驻留在同一目录中。
  • 文件名应尽可能具有描述性和意义。
  • 目录遵循与文件相同的命名约定。
  • 某些字符对操作系统有特殊意义。 命名文件时避免使用这些字符。

这些字符包括:

/ \ " ' * ; - ? [ ] ( ) ~ ! $ { } &lt > # @ & | space tab newline

您可以根据需要使用这种格式的文件名

const today_date = moment().format('MMMM Do YYYY, h_mm_ss A');
console.log("Offers "+ today_date +".xls");