使用 Luxon 中的特定格式将字符串格式化为日期时间
Formatting Strings to Datetime using specific formats in Luxon
现在我使用 moment-js
进行时间处理,但我想切换到 Luxon
。但是我在下面的实现中遇到了问题。
有一个文本字段,您可以在其中以您的语言环境时间格式输入日期时间,例如 HH:mm
(24 小时格式)或 hh:mm
(12 小时格式)。使用的时间格式存储在变量timeFormat
.
中
我对 moment-js
的解决方案:
let timeFormat = 'HH:mm' // 'hh:mm a'
let textfield = document.querySelector('#input-time');
let timeString = textfield.value;
let dateTime = moment(timeString, timeFormat, true);
// Check if time is valid
if(dateTime.isValid() === false){
return;
}
使用 12h 格式:
11:00 am
、09:43 pm
有效.
11:00
、21:43
无效.
使用 24 小时格式:
11:00 am
、09:43 pm
无效.
11:00
、21:43
有效.
我如何才能获得与 Luxon
类似的解决方案?我最大的问题是获得与 moment(timeString, timeFormat, true)
类似的功能,因此使用特定格式(例如 12h/24-format)将字符串格式化为日期时间。
可以使用fromFormat
方法
Create a DateTime from an input string and format string. Defaults to en-US if no locale has been specified, regardless of the system's locale.
示例:
const DateTime = luxon.DateTime;
const inputs = ['11:00 am', '09:43 pm', '11:00', '21:43'];
const formats = ['HH:mm', 'hh:mm a'];
const checkTime = (timeString, fmt) =>
DateTime.fromFormat(timeString, fmt).isValid
for (i=0; i<inputs.length; i++) {
for (j=0; j<formats.length; j++) {
console.log(`${inputs[i]} with format '${formats[j]}' is valid? ` + checkTime(inputs[i], formats[j]) );
}
}
<script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.js"></script>
查看手册的 For Moment users 部分以获得从 momentjs 迁移到 Luxon 的良好参考。
现在我使用 moment-js
进行时间处理,但我想切换到 Luxon
。但是我在下面的实现中遇到了问题。
有一个文本字段,您可以在其中以您的语言环境时间格式输入日期时间,例如 HH:mm
(24 小时格式)或 hh:mm
(12 小时格式)。使用的时间格式存储在变量timeFormat
.
我对 moment-js
的解决方案:
let timeFormat = 'HH:mm' // 'hh:mm a'
let textfield = document.querySelector('#input-time');
let timeString = textfield.value;
let dateTime = moment(timeString, timeFormat, true);
// Check if time is valid
if(dateTime.isValid() === false){
return;
}
使用 12h 格式:
11:00 am
、09:43 pm
有效.11:00
、21:43
无效.
使用 24 小时格式:
11:00 am
、09:43 pm
无效.11:00
、21:43
有效.
我如何才能获得与 Luxon
类似的解决方案?我最大的问题是获得与 moment(timeString, timeFormat, true)
类似的功能,因此使用特定格式(例如 12h/24-format)将字符串格式化为日期时间。
可以使用fromFormat
方法
Create a DateTime from an input string and format string. Defaults to en-US if no locale has been specified, regardless of the system's locale.
示例:
const DateTime = luxon.DateTime;
const inputs = ['11:00 am', '09:43 pm', '11:00', '21:43'];
const formats = ['HH:mm', 'hh:mm a'];
const checkTime = (timeString, fmt) =>
DateTime.fromFormat(timeString, fmt).isValid
for (i=0; i<inputs.length; i++) {
for (j=0; j<formats.length; j++) {
console.log(`${inputs[i]} with format '${formats[j]}' is valid? ` + checkTime(inputs[i], formats[j]) );
}
}
<script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.js"></script>
查看手册的 For Moment users 部分以获得从 momentjs 迁移到 Luxon 的良好参考。