Delphi需要4位数字的年份

麦当劳

用户将输入日期的字符串值。StrToDate将用于将字符串值转换为DateTime。如果用户输入的日期是2位数字的年份,则该日期可能被解析为当前世纪(20xx)或上一个世纪(19xx)。

为了消除歧义,如何要求用户输入4位数字的年份?

if isFourDigitYear(txbDate.Text) then
  date := StrToDate(txbDate.Text)
else
  ShowMessage('enter date with 4 digit year');
HeartWare

一种可能性是这样的:

FUNCTION IsFourDigitYear(DateStr : STRING ; DateSep : CHAR = '/') : BOOLEAN;
  VAR
    P   : Cardinal;

  BEGIN
    DateStr:=DateStr+DateSep; Result:=TRUE;
    REPEAT
      P:=POS(DateSep,DateStr);
      IF P=5 THEN EXIT;
      DELETE(DateStr,1,P)
    UNTIL DateStr='';
    Result:=FALSE
  END;

它将检查给定字符串中是否包含4个字符的一部分。

当前它不会检查该部分是否为数字(即仅包含数字)。如果您希望将其真正国际化,则需要输入使用的分隔符。某些国家/地区使用“-”作为日期分隔符,世界上其他大多数国家/地区都没有使用奇怪的M / D / Y格式,但D / M / Y或Y / M / D格式(在某些国家/地区,“ /”可能是“-”)。

如果您想要一个真正的国际功能,该功能还检查四位数部分是否实际上在当前有效日期格式的年份部分中,那么它将需要更复杂的解析器。以上可能会让您入门,但是...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Delphi需要4位数字的年份

来自分类Dev

乔达时间-仅解析4位数字年份

来自分类Dev

cfSpreadsheet 2位数字的年份

来自分类Dev

to_date未返回年份的4位数字,只有2位

来自分类Dev

在Twig模板中使用4位数字的年份作为本地化日期

来自分类Dev

Ruby Date.strptime不强制使用4位数字的年份

来自分类Dev

如何对两个带有4位数字(年份)的字符串进行排序?

来自分类Dev

正则表达式以匹配孤立的4位数字年份

来自分类Dev

解密4位数字

来自分类Dev

分割4位数字

来自分类Dev

moment.js 2位数的年份转换了错误的4位数的年份

来自分类Dev

将2位数的年份转换为4位数的年份

来自分类Dev

将2位数的年份转换为4位数的年份

来自分类Dev

如何只取年份中的最后3位数字

来自分类Dev

将世纪添加到2位数字年份

来自分类Dev

我只需要存储信用卡的最后4位数字

来自分类Dev

我需要屏蔽输入的号码并仅显示最后4位数字?

来自分类Dev

Python检查4位数字

来自分类Dev

以4或6开头的10位数字

来自分类Dev

比较Excel中的4位数字

来自分类Dev

4位数字的除法器

来自分类Dev

检查前4位数字是否等于后4位数字

来自分类Dev

检查前4位数字是否等于后4位数字

来自分类Dev

从日期时间对象中提取两位而不是四位数字年份

来自分类Dev

小数点后仅需要2位数字

来自分类Dev

divs按价格排序最多4位数字,但使用5位数字不会排序

来自分类Dev

从10位数字中获取所有可能的连续4位数字

来自分类Dev

4位数字前缀的实时输入验证,末尾可选8位数字

来自分类Dev

同步SMS验证的6位数字(而不是4位数字)