问题标签 [2-digit-year]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
16 回答
167917 浏览

c# - 在 C# 中将年份从 4 位转换为 2 位并再次返回

我的信用卡处理器要求我从信用卡到期日期发送两位数的年份。这是我目前的处理方式:

  1. DropDownList在页面上放了一个 4 位数的年份。
  2. 我在DateTime字段中验证过期日期,以确保传递给 CC 处理器的过期日期没有过期。
  3. 我将两位数的年份发送到 CC 处理器(根据需要)。我通过年份 DDL 中的值的子字符串来执行此操作。

有没有一种方法可以将四位数的年份转换为两位数的年份。我没有在DateTime物体上看到任何东西。还是我应该继续按原样处理它?

0 投票
3 回答
775 浏览

.net - 处理 Y2K 日期转换的首选方法?

是否有将 2 位数年份转换为 4 位数年份的首选算法?

我有一个要转换为 C# 的 2 位出生日期(以及月份和日期)DateTime。显然,出生日期不可能是未来,但 .NET 中是否存在将 2 位数年份转换为 4 位数年份的现有工具?

0 投票
1 回答
726 浏览

datetime - Win32:如何防止 DateTimePicker 接受 2 位数年份?

Microsoft 的DateTimePicker通用控件根据配置的 Locale 设置显示ShortDate 。客户的计算机配置了 2 位数年份 ShortDateFormat ( d/M/yy),因此 DateTimePicker 显示 2 位数年份:

替代文字

当用户将焦点放在日期时间选择器的年份块中时,Microsoft 会指出问题,并显示完整的 4 位数年份:

替代文字

但随后,想要输入1929年份的用户键入了一个 2 位数的年份:

替代文字

然后当他们标出时,当 Windows 将他们的 2 位数年份解释为介于1930和之间时,他们会感到困惑2029,并且假定为 2029:

替代文字

客户制定了一项全球公司政策,该政策规定将 Windows 区域设置配置为 2 位数年份。

因此,作为一种解决方法,我需要使用方便的DateTimePicker强制每个控件使用自定义日期格式:DateTime_SetFormat

这有帮助,所以现在DateTimePickernow 总是显示 4 位数的年份:

替代文字

问题是用户仍然可以输入“无效”的 2 位数年份:

替代文字

根据规则,哪个 Windows 仍在解释为 2029:

替代文字

我需要日期时间选择器来拒绝 2 位数的年份。

如果这不起作用,那么我将被迫用 3 个编辑框替换每个 DateTimePicker:

22 6 29

我可以将无效数字涂成红色,并指出用户输入的无效数据。

如何防止 DateTimePicker 接受 y2k 错误?

0 投票
3 回答
4851 浏览

python - 使用 strptime() 的 2 位数年份不能很好地解析生日

考虑以下生日(如dob):

  • 68 年 6 月 1 日
  • 69 年 6 月 1 日

当用 Python 解析时,datetime.strptime(dob, '%d-%b-%y')将产生:

  • datetime.datetime(2068, 6, 1, 0, 0)
  • datetime.datetime(1969, 6, 1, 0, 0)

好吧,他们当然应该在同一个十年出生,但现在甚至不是在同一个世纪!

根据文档,这是完全有效的行为:

当接受 2 位数年份时,它们会根据 POSIX 或 X/Open 标准进行转换:值 69-99 映射到 1969-1999,值 0-68 映射到 2000-2068。

我理解为什么要这样设置该功能,但有没有办法解决这个问题?也许通过定义您自己的 2 位数年份范围?

0 投票
1 回答
1053 浏览

php - 如何根据两位数的起始年份计算当前学年?

我正在开展一个学校网络项目,我需要从他/她的唯一注册号中知道特定学生所在的年份。

注册号是这样UXXEEXXXX的,其中XX前两位代表用户入校年份的后两位,EEX代表部门,后三位XXX代表学生的编号,根据他的时间挂号的。

例如,in U08EE1117U代表本科,08表示用户2008年入校,EE1表示系,1也表示用户从第一年开始,117表示用户是系第117位注册学生。

我想用 PHP 来获取用户的当前级别,表示为第一年的 100 级,第二年的 200 级,最后一年的学生最高 500 级。

我所做的是这样的:

$_SESSION["username"]注册号在哪里。

但我注意到这在很多年里都行不通。我想知道解决这个问题的最简单方法。(注册号仅在 100 年内有效。)

0 投票
6 回答
56297 浏览

python - 如何用 2 位数年份解析字符串日期?

yymmdd我需要以 59到yy05(1959 到 2005)的格式解析代表 6 位日期的字符串。根据time模块文档,Python 的默认基准年是 1969 年,这对我不起作用。

是否有一种简单的方法可以覆盖枢轴年份,或者您可以提出其他解决方案吗?我正在使用 Python 2.7。谢谢!

0 投票
1 回答
696 浏览

java - 两个字母的年份,可以吗?

最近在 Apache POI 库升级之后,我也升级了一些其他的 API。我使用的另一个库将所有单元格内容读取为字符串,然后我必须将此字符串解析为日期。

当用户开始输入日期为 dd-mm-yy 时出现问题,年份显示为 00yy AD。

根据文档SimpleDateFormat

对于解析,如果模式字母的数量超过 2 个,则按字面解释年份,而不考虑位数。所以使用模式 "MM/dd/yyyy", "01/11/12" 解析到公元 12 年 1 月 11 日

所以问题是,输入四个字母的年份比输入两个字母的年份更好吗?

另一个问题是,如果年份是两个字母格式,那么预测年份的最佳方法是什么。由于问题将在解析以下年份时出现

问候,哈努曼

0 投票
1 回答
108 浏览

mysql - SQL查询以查找连续年份中的工作日

对每个人来说,我对 MySQL 查询有点挣扎,我需要获取过去 5 年的周六列表,我很困惑,所以请帮助我!

0 投票
1 回答
4133 浏览

java - Joda Time & parsing two digit year correctly based on pivot

I have the following (somewhat abbreviated) code to parse String input into a Joda Time DateTime object. I need to properly handle multiple formats, including four & two digit years.

The issue I'm having is that when the user enters 120100, I expect it to be able to parse correctly and ultimately output at 12/01/1900. However, formatter.parseDateTime(input); in convertToDateTime throws an IllegalArgumentException instead, and the method returns null.

Probably worth noting that if I remove the appendTwoDigitYear from the DateTimeFormatterBuilder chain, the input does parse successfully, but 120100 becomes 12/01/0000, but that's not what I need.

Am I misunderstanding the Joda Time API? Shouldn't appendTwoDigitYear with the 1950 pivot handle the 00 two year digit as 1900?

0 投票
3 回答
1447 浏览

sql - 将日期从 YY 转换为 YYYY --- 编译器/解释器如何知道使用正确的世纪?

我只是在做一堆旧数据库的导入,当我看着结果滚动时,我想知道,它如何/为什么知道将 12/31/13 转换为 12/31/2013,但是 12/31 /99 到 1999 年 12 月 31 日?(在这种情况下,“它”是 Python 的 strftime(%Y/%m/%d) 函数)

2050年会发生什么?12/31/50 的记录是否会默认解释为 2050、1950 或 2150?

我意识到它可能因语言而异,并且可能存在专门强制使用某个世纪的标志/选项。但是,当您没有明确这样做时,默认情况下是什么做出了判断?