如何将两个字母的星期几格式从 Moment 转换为 Luxon?

How to convert from Moment to Luxon for two letter day of week format?

我正在将打字稿应用程序转换为使用 Luxon 而不是 Moment 进行日期时间处理,我不确定如何使用 Luxon 的内置功能(或可配置选项)将 return 星期几作为两个字母.

瞬间: moment().format('MM/dd/y') 应该 return '04/Tu/2022'.

乐升: DateTime.now().toFormat('MM/ccc/yyyy') 但这给了我 '04/Tue/2022',它不符合所需的后端数据格式。

是否可以设置一个选项参数来指定 return 星期几字符串的字母数?或者其他方法?

这是我发现的一个示例,它允许您使用选项指定 2 位数字的日期和月份...

DateTime.now().toLocaleString({ day: '2-digit', month: '2-digit', year: 'numeric' }) => 05/10/2022

我担心这在 Luxon Table of tokens lists only ccc (day of the week, as an abbreviate localized string), cccc (day of the week, as an unabbreviated localized string), ccccc (day of the week, as a single localized letter) that maps exactly the possible values ('narrow', 'short', 'long') of weekday key of the Intl.DateTimeFormat option object.

中“本地”是不可能的

可能的解决方法是使用自定义函数并仅获取星期几的前两位数。

const DateTime = luxon.DateTime;

function customFormat(dt) {
  const year = dt.year;
  const month = dt.toFormat('MM');
  const dow = dt.toFormat('ccc').substring(0, 2);
  return month + '/' + dow + '/' + year;
}

console.log(customFormat(DateTime.now()));
console.log(customFormat(DateTime.fromISO('2022-05-11')));
console.log(customFormat(DateTime.fromISO('2022-05-10')));
<script src="https://cdn.jsdelivr.net/npm/luxon@2.3.1/build/global/luxon.min.js"></script>