- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
尝试为信用卡到期日设置一个 textField
下面的代码可以正常工作,只是想改变行为,目前当您从第三个数字开始输入时 /字符将被添加为过期格式。如果我想在用户键入第二个数字后添加 / 字符怎么办?例如,如果用户键入 01 直接插入分隔符
open func reformatAsExpiration(_ textField: UITextField) {
guard let string = textField.text else { return }
let expirationString = String(ccrow.expirationSeparator)
let cleanString = string.replacingOccurrences(of: expirationString, with: "", options: .literal, range: nil)
if cleanString.length >= 3 {
let monthString = cleanString[Range(0...1)]
var yearString: String
if cleanString.length == 3 {
yearString = cleanString[2]
} else {
yearString = cleanString[Range(2...3)]
}
textField.text = monthString + expirationString + yearString
} else {
textField.text = cleanString
}
}
最佳答案
Swift 5 :
这是验证输入的月份和年份的解决方案
使用 TextField 委托(delegate)方法 shouldChangeCharactersIn
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let oldText = textField.text, let r = Range(range, in: oldText) else {
return true
}
let updatedText = oldText.replacingCharacters(in: r, with: string)
if string == "" {
if updatedText.count == 2 {
textField.text = "\(updatedText.prefix(1))"
return false
}
} else if updatedText.count == 1 {
if updatedText > "1" {
return false
}
} else if updatedText.count == 2 {
if updatedText <= "12" { //Prevent user to not enter month more than 12
textField.text = "\(updatedText)/" //This will add "/" when user enters 2nd digit of month
}
return false
} else if updatedText.count == 5 {
self.expDateValidation(dateStr: updatedText)
} else if updatedText.count > 5 {
return false
}
return true
}
下面函数中的验证逻辑
func expDateValidation(dateStr:String) {
let currentYear = Calendar.current.component(.year, from: Date()) % 100 // This will give you current year (i.e. if 2019 then it will be 19)
let currentMonth = Calendar.current.component(.month, from: Date()) // This will give you current month (i.e if June then it will be 6)
let enteredYear = Int(dateStr.suffix(2)) ?? 0 // get last two digit from entered string as year
let enteredMonth = Int(dateStr.prefix(2)) ?? 0 // get first two digit from entered string as month
print(dateStr) // This is MM/YY Entered by user
if enteredYear > currentYear {
if (1 ... 12).contains(enteredMonth) {
print("Entered Date Is Right")
} else {
print("Entered Date Is Wrong")
}
} else if currentYear == enteredYear {
if enteredMonth >= currentMonth {
if (1 ... 12).contains(enteredMonth) {
print("Entered Date Is Right")
} else {
print("Entered Date Is Wrong")
}
} else {
print("Entered Date Is Wrong")
}
} else {
print("Entered Date Is Wrong")
}
}
关于ios - 将 UITextField MM/YY 格式化为过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51631530/
我正在使用 filebeat 使用 logstash 将我的日志推送到 elasticsearch,并且之前的设置对我来说运行良好。我收到 Failed to publish events error
我有一个带有日期列 Date ( df ) 的 data.frame ( dd-mm-yyyy )。 如何将其转换为 ( mm-yyyy )? 我努力了: dates <- as.Date(df$Da
lex.yy.c 中的“yy”代表什么? 最佳答案 Lex 旨在与 Yacc 配合使用。 Steven Johnson 的论文 Yacc: Yet Another Compiler Compiler
我陷入了这样一种情况:我通过“LOAD DATA LOCAL INFILE”从 CSV 文件读取数据并将其存储在 Mysql 表中。 我的表格中的日期列是字符串类型。 如果我的日期格式为'yy/dd/
我需要更改日期格式以将其插入数据库,但遗憾的是更改 dateFormat 变量不起作用。我有一些验证可以将日期提前到当前日期,并使超出的日期不可点击。 $( function() { v
我使用 Google 表单来收集用户的日期,他们使用日期选择器。格式是美国格式,mm/dd/yy (1/25/2016),但我需要欧盟格式 dd/mm/yy (25/1/2016)。 该脚本收集多个日
如何将日期从 dd-mm-yy 转换为 mm-dd-yy 下面是我的代码 但结果是:09-10-2001 我需要 09-01-2010 最佳答案 这行不通: date('m-d-y', strtot
我的数据库中有一些日期格式为 dd-mm-yy,还有一些日期格式为 yy-mm-dd 我希望它们都在 yy-mm-dd 中 它们存储在 VARCHAR 字段中 示例日期是: 2011-10-19 和
嗨,我有一个 excel 文件,其中包含以下格式的年份列 yy-yy有数千行。例如, year 65-67 99-02 03-05 现在我希望这个专栏是这样的 year 1965-1997 1999-
行为: 当我转置一个包含日期的一维数组以便将它们完整地打印到一张纸上时,一些日期从 dd/mm/yy至mm/dd/yyyy . 特别是,当月份中的某天: 小于等于 12,如 January 2, 20
在我的表格中,我有: __('Date') ?>: " class="v-middle"/> 这显示日历。 在标题中我有: js_csscalendar/calendar-win
当我将格式为“dd/mm/yy”的文件中的日期插入到日期格式为“yy/mm/dd”的数据库表中时,日期是错误的: 我得到的不是 2019:04:11,而是 2011:04:19。 我想保留数据库格式(
这是一个奇怪的问题,但我有一个 2018 年 10 月 11 日的原始 excel,当我使用以下方法将列转换为日期时间时会发生上述问题: df.Date = pd.to_datetime(df['Da
我正在尝试对 pandas 处理日期和格式的功能进行简单的测试。为此,我创建了一个具有如下值的数据框。 : df = pd.DataFrame({'date1' : ['10-11-11','12-1
正如标题所说,我想将日期选择器格式从 mm-dd-yy 更改为 dd-mm-yy。 这是我的完整代码: $(function() { $('#datepicker').datepicker({
需要帮助查找或让正则表达式匹配 MM/YY 或 MM/YYYY 格式。我的 RegExFu 很弱,我什至不知道从哪里开始写。 月份应该是 1-12,年份,2009 年之后的任何内容都应该有效。很抱歉之
我最近将字段的数据类型从 varchar 更改为 datetime,但在此之前,我首先复制了它,因为内容将重置为此值 000-00-00 00-00-00 现在,我正在尝试更新表的日期时间字段。 这就
好吧,我已经和这个战斗了足够长的时间。我有一个正则表达式 ^(1[0-2]|0[1-9]|\d)\/(20\d{2}|19\d{2}|0(?!0)\d|[1-9]\d) 这将匹配 8/15、08/15
下面的查询返回结果: SELECT * FROM EMPLOYEES WHERE HIRE_DATE = TO_DATE('21-09-1989','DD-MM-YY'); 好像我将日期从 21-09
我在使用 Excel 宏 (VBA) 时遇到问题,该宏旨在从 Excel 电子表格中获取日期,减去一个月并将其重新格式化为 MMM-YY。基本上我想采取 3/31/2013 并将其转换为 2 月 13
我是一名优秀的程序员,十分优秀!