如何从jquery

时间:2016-02-15 07:13:13

标签: javascript jquery date

我知道它有点愚蠢的问题,但我实际上想知道如何在不使用" Split"的情况下检索已经拥有的日期的年份值。功能。我可以在" split"的帮助下实现它。功能。下面是我在jquery中使用的代码。

outputJSon = JSON.parse($('#' + Datepicker_id).val());
var currentYear = parseInt(CalculateYearfromString($('#' + currentActivityCalendarId).parents('.service-timeline').find('.membership-year .period').text()));

if (currentYear === undefined && $.trim(currentYear) === "")
  currentYear = new Date().getFullYear();

if (parseInt(outputJSon["Date"].split('/')[0]) === currentYear)
  outputDate = outputJSon["Date"];
else
  outputDate = outputJSon["Date"].replace(outputJSon["Date"].split('/')[0], currentYear)

outputDateType = outputJSon["DateType"];

在上面的代码中,我正在以JSON格式检索日期值,该格式返回日期,例如。 2016/05/26 DateType例如。天即可。

我正在获取我选择的当前年份,然后检查 currentYear 值是否等于 outputJSon [" Date"]中的年份即可。如果匹配,那么我将用 currentYear 替换 outputJSon ["日期"] [0] 值strong>,在替换功能的帮助下。这可以按预期工作,不会遇到任何错误。

我只想确保如果日期格式发生变化(从2016/05/26到2016年5月26日)**那么我写的分割函数将检索错误的值。我怎么能避免这种情况。我应该删除** split 函数并考虑其他内容吗?

感谢任何帮助。

谢谢,

5 个答案:

答案 0 :(得分:0)

您可以检查长度以确保它是有效的年份数。

currentYear2 = outputJSon["Date"].split('/');
currentYear2 = (currentYear2[0].length === 4) ? currentYear2[0] : currentYear2[2];

答案 1 :(得分:0)

当你只是做

时是否有任何问题
outputDate = new Date(outputJSon["Date"]).getFullYear();

答案 2 :(得分:0)

regex_yearfirst = /\d{4}\W/;
regex_yearlast = /\d{4}\n/;
if (regex_yearfirst.test(outputJSon["Date"])) {
    yearIndex=0;
    }
else if (regex_yearlast.test(outputJSon["Date"])) {
    yearIndex=2;
    }
else {
    console.log("date format not recognized")
    }
if (parseInt(outputJSon["Date"].split('/')[yearIndex]) === currentYear) { 
outputDate = outputJSon["Date"]; 
    }
else {
  outputDate = outputJSon["Date"].replace(outputJSon["Date"].split('/')[yearIndex], currentYear)
    }

答案 3 :(得分:0)

您可以尝试这样的事情:

JSFiddle

代码

function getYear() {
    var input = $("#dpDate").val();
    var cdate = getDate(input);
    console.log(cdate, cdate.getFullYear());
}

function getDate(input) {
    var arr = [];
    var seperator = ['/', '-'];
    var year, month, date;
    var yearIndex = 2;
    var result = undefined;

    seperator.forEach(function(s) {
        if (input.indexOf(s) > -1)
            arr = input.split(s);
    });

    if (arr.length > 1) {
        // Set year
        if (arr[0] > 1000) {
            year = arr[0]
            yearIndex = 0;
        } else if (arr[2] > 1000) {
            year = arr[2];
            yearIndex = 2;
        }

        // set month and date
        // If string starts with year, assume yyyy/mm/dd
        if (yearIndex === 0) {
            month = arr[1]
            date = arr[2]
        } else {
            // If value greater than 12, assume it as date and other one as month
            if (arr[0] > 12) {
                date = arr[0]
                month = arr[1]
            } else if (arr[1] > 12) {
                date = arr[1]
                month = arr[0]
            }
            // If none of the value is ggreater than 12, assume default format of dd/mm/yyyy
            else {
                date = arr[0]
                month = arr[1]
            }
        }

        result = new Date(year, month - 1, date);
    }
    return result;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<input id="dpDate" type="text" placeholder="dd/mm/yyyy" value="15/2/2016" />
<button onclick="getYear()">Get Year</button>

答案 4 :(得分:0)

完全不合情理,但 indexOf 有什么问题?

if (outputJSon["Date"].indexOf(currentYear) != -1) {
  // currentYear is in the string somewhere
}

另请注意,在原版中,不需要 parseInt

outputJSon["Date"].split('/')[0] == currentYear

就足够了(而不是打字)。

此外, parseInt 永远不会返回 undefined ,所以:

currentYear === undefined

总是假的,所以:

if (currentYear === undefined && $.trim(currentYear) === "")

永远不会是真的和作业:

  currentYear = new Date().getFullYear();

永远不会执行。

我也会严重质疑使用:

outputJSon = JSON.parse($('#' + Datepicker_id).val());

使用JSON.parse似乎完全没有意义,你已经有$('#' + Datepicker_id).val()返回的字符串。