无法选择BC年份
Cannot select years BC
我正在做一个项目,需要处理日期BC(例如100BC或2000BC)以及2014AC等。
在Datepicker的API文档中,声明minDate
和maxDate
可以使用javascript Date
对象进行设置(1970年两边的最小值和最大值约为285616年)。
似乎不可能将年份设定在公元前,甚至在1999年1月1日之前。
$("#date").datepicker({
dateFormat: 'dd-mm-yy',
showButtonPanel: true,
changeMonth: true,
changeYear: true,
yearRange: '0:2010',
inline: true });
我怎样才能超过这个极限?
您需要自己实现一个新的日期选择器。1752年4月9日不存在。
http://www.genealogytoday.com/columns/everyday/030902.html
请尝试在jquery网站上的日期选择器中键入该日期。
http://jqueryui.com/datepicker/
干杯。
我认为根本问题是数学/逻辑错误。最初,当年份下拉列表出现时,它显示19
,当前为年份2019
。切换到1492,一切正常。切换到666,一切正常。切换到121,一切正常。切换到99…哦,现在是1999。
你可以在这里测试:
$(function() {
$("#datepicker").datepicker({
dateFormat: 'dd/mm/yy',
showButtonPanel: true,
changeMonth: true,
changeYear: true,
yearRange: 'c-22019:c+1',
inline: true
});
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<p>Date: <input type="text" id="datepicker"></p>
如果你试图回到公元100年以下的任何东西,比如-1或公元前1年,这会导致一个问题。
构建年度下拉列表的逻辑似乎需要一些帮助。你可以在不列颠哥伦比亚省选择一个日期,但很难从这个范围内到达那里。需要研究一下,稍后再更新。
更新
我看到yearRange
的逻辑与使用的逻辑不同。为了获得所需的结果,最好基于当前年份格式c-nn:c+nn
进行工作。
$(function() {
$("#datepicker").datepicker({
dateFormat: 'dd/mm/yy',
showButtonPanel: true,
changeMonth: true,
changeYear: true,
yearRange: '-2000:2020',
inline: true
});
var oldD = new Date();
oldD.setYear(-1);
$("#datepicker").datepicker("option", "defaultDate", oldD);
});
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<p>Date: <input type="text" id="datepicker"></p>
还有一个0
到99
的问题,我认为这与Date
在一年后假设并添加19
有关。我认为这可以通过使用Date对象来解决,但在jQuery UI代码的这一部分中没有做到这一点:
// Year selection
if ( !inst.yearshtml ) {
inst.yearshtml = "";
if ( secondary || !changeYear ) {
html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
} else {
// determine range of years to display
years = this._get( inst, "yearRange" ).split( ":" );
thisYear = new Date().getFullYear();
determineYear = function( value ) {
var year = ( value.match( /c[+'-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
( value.match( /[+'-].*/ ) ? thisYear + parseInt( value, 10 ) :
parseInt( value, 10 ) ) );
return ( isNaN( year ) ? thisYear : year );
};
year = determineYear( years[ 0 ] );
endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
for ( ; year <= endYear; year++ ) {
inst.yearshtml += "<option value='" + year + "'" +
( year === drawYear ? " selected='selected'" : "" ) +
">" + year + "</option>";
}
inst.yearshtml += "</select>";
html += inst.yearshtml;
inst.yearshtml = null;
}
}
您无论如何都无法将不列颠哥伦比亚省与我们当前的日历一起使用,因为他们使用的是儒略历。试着把我们的日期转换成朱利安,看看是否有效。
- jquery日期选择器年份范围默认值
- 在Materialize Calendar中设置年份范围
- 从字符串中提取年份的Javascript正则表达式
- 如何在下拉列表中选择完整的日历月份和年份
- 我希望这个日期选择器可以从1990年到2000年之间的年份中选择日期
- 更改不在引导模式窗口中工作的月份和年份
- 如果选择了当前年份,则在Select元素中仅显示当前和未来月份
- angular ui boostrap日期选择器显示年份第一
- Moment JS:忽略年份的天数差异
- 使用moment.js获取月份和年份中的所有日期
- moment.js年份/数字格式,阿拉伯语言环境
- Date对象未返回预期年份
- Javascript或jQuery中的日期、月份和年份
- dojo.form.datetextbox更改默认年份
- 如果今天是会计年度的最后一天,请从下拉菜单中删除当前年份
- 按年份和月份折叠帖子标题菜单
- 批次图 在 X 轴上按顺序显示不同年份的数据
- 如何将选定的日期月份和年份打印到不同的DIV标签中
- 在 JavaScript 中使用最后两个数字获取年份
- 无法选择BC年份