到目前为止,我的代码会检查日期天气是否有效,但我不知道如何获取我在输入字段中输入的日期的日期名称。例如:如果我输入 12/01/1994,它应该打印星期三
function isValidDate(inputDate) {
if (!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(inputDate)) return false;
var parts = inputDate.split('/'); //12 01 1994
var day = parseInt(parts[0], 10);
var month = parseInt(parts[1], 10);
var year = parseInt(parts[2], 10);
if (year < 1000 || year > 3000 || month == 0 || month > 12) return false;
var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) monthLength[1] = 29;
return day > 0 && day <= monthLength[month - 1];
}
class Inputdate extends React.Component {
state = {
inputDate: '',
day: '',
};
render() {
console.log(this.state);
return (
<div>
<input
name="date"
type="text"
value={this.state.value}
placeholder="dd-mm-yyyy"
onChange={(e) => {
if (isValidDate(e.target.value)) {
this.setState({ inputDate: e.target.value });
} else {
this.setState({ inputDate: 'invalid date' });
}
}}
/>
<p>{this.state.inputDate}</p>
</div>
);
}
}
最佳答案
我认为在 javscript 中处理日期时使用 toLocaleString
是更好的做法,例如,如果您尝试在有工作日的地方使用数组并从中获取特定字符串你的日期格式不好,因为在 IOS 上你会得到 undefined
因为 "12/01/1994"不是 ECMA-262 支持的格式所以解析实现将依赖并且 iOS 会处理它作为无效日期。
const getWeekday = (dateFormat) => {
// split date in non-digit chaarcters
let [d, m, y] = dateFormat.split(/\D/);
//put them in Date method
const date = new Date(y, m - 1, d)
//and return weekday in long format
const weekday = date.toLocaleString("default", { weekday: "long" })
return weekday
}
console.log(getWeekday('12/01/1994'))
关于javascript - 如何在不使用 moment js 的情况下从输入日期中取出日期名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70167752/