繁体   English   中英

如何在不使用时刻 js 的情况下从输入日期中取出日期名称

[英]how to take out the day name from the input date without using moment js in react

到目前为止,我的代码检查日期天气是否有效,但我不知道如何获取我在输入字段中输入的日期的日期名称。 例如:如果我输入 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>
    );
  }
}

这应该有效:

 let d = new Date("12/01/1994") const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] let day = weekday[d.getDay()]; console.log(day)

const event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };

var date = event.toLocaleDateString(undefined, options)


var day =  date.split(',')[0] // This will show you the day name.
console.log(day)

我认为在 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'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM