我知道它有点愚蠢的问题,但我实际上想知道如何在不使用" 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 函数并考虑其他内容吗?
感谢任何帮助。
谢谢,
答案 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)
您可以尝试这样的事情:
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()
返回的字符串。