【问题标题】:convert date format javascript beforeshowday [duplicate]在showday之前转换日期格式javascript [重复]
【发布时间】:2018-04-11 00:20:34
【问题描述】:
    var dates = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewData["ph"]));
    //dates[0] = 16-09-2017
    //date = 09/16/2017
    $('#StartDate').datepicker({
        dateFormat: JsDateFormat,
        autoclose: true,
        beforeShowDay: function (date) {
            for (var i = 0; i < dates.length; i++) {
                if (new Date(dates[i]).toString() == date.toString()) {
                    console.log(date);
                    return [true, 'ui-state-highlight highlight-red', name[i]];
                }
            }
            return [true];
        }
    });

如何将日期格式从“09/16/2017”更改为“16-09-2017”? 我试过 new Date('dd-M-yy', date).toString() - 不工作 date.toString('dd-M-yy') - 不工作

【问题讨论】:

    标签: javascript date datepicker format


    【解决方案1】:
    function formattedDate(d = new Date) {
      let month = String(d.getMonth() + 1);
      let day = String(d.getDate());
      const year = String(d.getFullYear());
    
      if (month.length < 2) month = '0' + month;
      if (day.length < 2) day = '0' + day;
    
      return `${day}/${month}/${year}`;
    }
    

    此函数以您需要的格式返回日期

    【讨论】:

    • 这个函数返回错误 "Expected {"
    • 确保完全复制
    • 300% 确认已完全复制
    • 可能正在使用不支持默认参数处理或字符串操作的旧浏览器
    • @rahulmr 谢谢你的回复
    【解决方案2】:

    由于您使用的是 datepicker,因此您可以使用 $.datepicker.formatDate

    这是一个使用formatDate 比较数组中日期的sn-p:

    var dates = ['10-10-2017', '25-10-2017', '29-10-2017'];
    $('#StartDate').datepicker({
        dateFormat: "d/m/yy",
        autoclose: true,
        beforeShowDay: function (date) {
          for (var i = 0; i < dates.length; i++) {
            if (dates[i] == $.datepicker.formatDate('dd-mm-yy', date)) {
              console.log(date);
              return [true, 'ui-state-highlight highlight-red', name[i]];
            }
          }
          return [true];
        }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
    <input type="text" id="StartDate" name="StartDate"/>

    【讨论】:

    • 日期在函数内部。函数(日期)...
    • 我知道日期的格式是“09/16/2017”,那么我如何在这个日期进入我的 if 语句之前对其进行格式化?
    • 我觉得你可以这样使用if (dates[i] == $.datepicker.formatDate('dd-mm-yy', date))
    • 我用工作的 sn-p 编辑了答案
    • 非常感谢您的所有回复~成功了!!!!!!!!!
    【解决方案3】:

    ViewData["ph"] 日期时间将被转换为带有运行应用程序的服务器文化的字符串,因此请务必在服务器中转换为这种格式并分配给 ViewData.

    如果传递给 JsonConvert 的值是 Date 对象类型,则使用方法 SerializeObject 的格式化参数

    JsonConvert.SerializeObject(this, Formatting.None, new IsoDateTimeConverter() { 
                 DateTimeFormat = "dd-M-yy" });
    

    如果您想将日期转换为字符串,请参考@rahul mr 提供的答案 适用于所有浏览器

       function formattedDate(d) {
        var month = d.getMonth() + 1;
        var day = d.getDate();
        var year = d.getFullYear();
    
      if (month.length < 2) month = '0' + month;
      if (day.length < 2) day = '0' + day;
    
      return day + '/' + month + '/' + year;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-19
      • 2013-07-18
      • 2016-04-17
      相关资源
      最近更新 更多