问题标签 [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.
c# - 在 C# 中将年份从 4 位转换为 2 位并再次返回
我的信用卡处理器要求我从信用卡到期日期发送两位数的年份。这是我目前的处理方式:
- 我
DropDownList
在页面上放了一个 4 位数的年份。 - 我在
DateTime
字段中验证过期日期,以确保传递给 CC 处理器的过期日期没有过期。 - 我将两位数的年份发送到 CC 处理器(根据需要)。我通过年份 DDL 中的值的子字符串来执行此操作。
有没有一种方法可以将四位数的年份转换为两位数的年份。我没有在DateTime
物体上看到任何东西。还是我应该继续按原样处理它?
.net - 处理 Y2K 日期转换的首选方法?
是否有将 2 位数年份转换为 4 位数年份的首选算法?
我有一个要转换为 C# 的 2 位出生日期(以及月份和日期)DateTime
。显然,出生日期不可能是未来,但 .NET 中是否存在将 2 位数年份转换为 4 位数年份的现有工具?
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
这有帮助,所以现在DateTimePicker
now 总是显示 4 位数的年份:
问题是用户仍然可以输入“无效”的 2 位数年份:
根据规则,哪个 Windows 仍在解释为 2029:
我需要日期时间选择器来拒绝 2 位数的年份。
如果这不起作用,那么我将被迫用 3 个编辑框替换每个 DateTimePicker:
22 6 29
我可以将无效数字涂成红色,并指出用户输入的无效数据。
如何防止 DateTimePicker 接受 y2k 错误?
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 位数年份范围?
php - 如何根据两位数的起始年份计算当前学年?
我正在开展一个学校网络项目,我需要从他/她的唯一注册号中知道特定学生所在的年份。
注册号是这样UXXEEXXXX
的,其中XX
前两位代表用户入校年份的后两位,EEX
代表部门,后三位XXX
代表学生的编号,根据他的时间挂号的。
例如,in U08EE1117
,U
代表本科,08
表示用户2008年入校,EE1
表示系,1
也表示用户从第一年开始,117
表示用户是系第117位注册学生。
我想用 PHP 来获取用户的当前级别,表示为第一年的 100 级,第二年的 200 级,最后一年的学生最高 500 级。
我所做的是这样的:
$_SESSION["username"]
注册号在哪里。
但我注意到这在很多年里都行不通。我想知道解决这个问题的最简单方法。(注册号仅在 100 年内有效。)
python - 如何用 2 位数年份解析字符串日期?
yymmdd
我需要以 59到yy
05(1959 到 2005)的格式解析代表 6 位日期的字符串。根据time
模块文档,Python 的默认基准年是 1969 年,这对我不起作用。
是否有一种简单的方法可以覆盖枢轴年份,或者您可以提出其他解决方案吗?我正在使用 Python 2.7。谢谢!
java - 两个字母的年份,可以吗?
最近在 Apache POI 库升级之后,我也升级了一些其他的 API。我使用的另一个库将所有单元格内容读取为字符串,然后我必须将此字符串解析为日期。
当用户开始输入日期为 dd-mm-yy 时出现问题,年份显示为 00yy AD。
根据文档SimpleDateFormat
对于解析,如果模式字母的数量超过 2 个,则按字面解释年份,而不考虑位数。所以使用模式 "MM/dd/yyyy", "01/11/12" 解析到公元 12 年 1 月 11 日
所以问题是,输入四个字母的年份比输入两个字母的年份更好吗?
另一个问题是,如果年份是两个字母格式,那么预测年份的最佳方法是什么。由于问题将在解析以下年份时出现
问候,哈努曼
mysql - SQL查询以查找连续年份中的工作日
对每个人来说,我对 MySQL 查询有点挣扎,我需要获取过去 5 年的周六列表,我很困惑,所以请帮助我!
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?
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?
我意识到它可能因语言而异,并且可能存在专门强制使用某个世纪的标志/选项。但是,当您没有明确这样做时,默认情况下是什么做出了判断?