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

标签 javascript reactjs

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

相关文章:

javascript - react : How to map select option value to a state key?

session - 在 React 中管理用户 session 的最佳方法是什么?

javascript - 尝试通过 (jQuery)ajax 调用加载 Google 图表

javascript - 查看之前的 Backbone.js 模型?先有鸡先有蛋?

javascript - 执行从 AngularJS 中的变量调用的函数

javascript - 使我的函数更具可重用性的技巧

javascript - 对象破坏是通过引用工作还是克隆对象

javascript - 如何将文件从electronjs菜单渲染到react元素?

reactjs - React,拖动后如何防止执行点击事件?

javascript - for循环只返回reactJS中的初始索引