如何使用 Luxon 格式化时间(不是日期)?

dra*_*035 4 javascript time date momentjs luxon

我需要将后端获取的数据“17:00”转换为“5pm”。使用moment我只是这样做:

moment('17:00', ['HH']).format('h:mma')
Run Code Online (Sandbox Code Playgroud)

如何实现同样的事情Luxon?虽然moment允许直接格式化时间,但似乎Luxon格式函数需要日期(我没有)。

有什么建议吗?

cmg*_*ess 5

DateTime.fromISO('17:00').toLocaleString(DateTime.TIME_SIMPLE)    // 5:00 PM
DateTime.fromISO('17:00').toFormat('h:mma')                       // 5:00PM
DateTime.fromISO('17:00').toFormat('h:mm a')                      // 5:00 PM
Run Code Online (Sandbox Code Playgroud)

尽管无法弄清楚如何使 meridiem 小写
https://github.com/moment/luxon/issues/224

编辑如果想要小写可以做这样的事情

const DateTime = luxon.DateTime;
 
const dt = DateTime.fromISO('17:00')
const meridiem = (dt.hour > 11) ? 'p' : 'a'
const final =  `${dt.toFormat('h:mm')}${meridiem}m`

console.log(final)
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.3.1/luxon.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

正如Lukas H.在评论中提到的更新,更简单的方法是使用.toLowerCase()

const DateTime = luxon.DateTime;

const dt = DateTime.fromISO('17:00')
const final =  dt.toFormat('h:mma').toLowerCase()

console.log(final)
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.3.1/luxon.min.js"></script>
Run Code Online (Sandbox Code Playgroud)