Google 脚本中的序数日期格式(th、rd、st、nd)

Min*_*ger 2 javascript ordinal google-sheets date-formatting google-apps-script

我到处寻找一个简单的函数来将日期(在我的例子中,由 Google 表单给出)转换为合同中使用的序数格式:

即2018年5月25日

有一个人提出了这个问题,其他人将其标记为重复,然后引用了另一个根本没有回答他的问题的答案!所以对于那些需要这个的人来说 - 这是一个简单的函数:

function ordinal(date) {
  var d = date.getDate();
  var month = new Array ();
  month[0] = "January";
  month[1] = "February";
  month[2] = "March";
  month[3] = "April";
  month[4] = "May";
  month[5] = "June";
  month[6] = "July";
  month[7] = "August";
  month[8] = "September";
  month[9] = "October";
  month[10] = "November";
  month[11] = "December";

  var m = month[date.getMonth()];
  var y = date.getYear();
  return d + (d > 0 ? ['th', 'st', 'nd', 'rd'][(d > 3 && d < 21) || d % 10 > 3 ? 0 : d % 10] : '') + " day of " + m +", " + y;
}
Run Code Online (Sandbox Code Playgroud)

Dim*_*gns 6

很多时候,刚接触某个平台的开发人员最终都会重新发明轮子。实现已经提供的逻辑(根据经验)。没有现成的解决方案可以添加这些后缀(st、nd、rd、th),但是,在您的情况下,您可以利用该Utilities.formatDate()方法使事情变得更容易一些:

function getOrdinal(date) {
    var d = date.getDate(),
        suffix = ['th', 'st', 'nd', 'rd'][(d > 3 && d < 21) || d % 10 > 3 ? 0 : d % 10];

    return Utilities.formatDate(date, Session.getScriptTimeZone(), "d'" + suffix + " day of' MMMM, yyyy");
}
Run Code Online (Sandbox Code Playgroud)

一点建议,始终从规范来源开始搜索。这需要一段时间,但如果您打算定期利用 Google Apps 脚本(或任何与此相关的语言),那么最好熟悉官方文档和参考资料。

以下是官方 Apps 脚本参考文档的链接。

  • 文档中并不清楚如何实际设置该实用程序方法。不喜欢你的回复中居高临下的语气,但感谢你提供的格式。我相信它对于其他正在寻找的人来说会派上用场。 (2认同)