获取倒计时距离某一时间点的时间,判断身份证,电话号码格式是否正确的简单封装

#import "HelpToolsDataOrPhoneOrIDCard.h"

@implementation HelpToolsDataOrPhoneOrIDCard

+ (NSString *)getTimeFromThatTime:(NSDateComponents *)componets{

//    创建一个日历对象,并用构造方法选择不同地区的时间NSCalendarIdentifierChinese

NSCalendar * calendar =[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

//    创建一个NSDate ,把NSDateComponents转化成日期类型

NSDate *destinationDate =  [calendar dateFromComponents:componets];

//   设置你要显示的时间格式,年月日时分秒

NSInteger units = NSCalendarUnitDay |NSCalendarUnitHour|NSCalendarUnitMinute | NSCalendarUnitSecond;

NSDateComponents *compoents1 = [calendar components:units fromDate:[NSDate date] toDate:destinationDate options:0];

NSLog(@"%@",[NSDate date]);

NSInteger days = [compoents1 day];

NSInteger hour = [compoents1 hour];

NSInteger min = [compoents1 minute];

NSInteger second = [compoents1 second];

NSString *strLabel = [NSString stringWithFormat:@"还有%ld天%ld小时%ld分钟%ld秒",days,hour,min,second];

return strLabel;

}

+(NSString *)getDayStringWithTime:(NSString *)time{

//将传入时间转化成需要的格式

static NSDateFormatter* formater = nil;

if (formater == nil) {

formater=[[NSDateFormatter alloc] init];

[formater setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

}

NSDate *fromdate=[formater dateFromString:time];

NSTimeZone *fromzone   = [NSTimeZone systemTimeZone];

NSInteger frominterval = [fromzone secondsFromGMTForDate:fromdate];

NSDate *fromDate = [fromdate  dateByAddingTimeInterval: frominterval];

//获取当前时间

NSDate *date       = [NSDate date];

NSTimeZone *zone   = [NSTimeZone systemTimeZone];

NSInteger interval = [zone  secondsFromGMTForDate: date];

NSDate *localeDate = [date  dateByAddingTimeInterval: interval];

double intervalTime = [fromDate timeIntervalSinceReferenceDate] - [localeDate timeIntervalSinceReferenceDate];

long lTime = (long)intervalTime;

NSInteger iDays  = lTime/86400;

NSInteger iHours = (lTime-iDays*86400)/3600;

if (iDays == 0 ) {

NSInteger iMinute = (lTime-iHours*3600)/60;

return [NSString stringWithFormat:@"剩%ld小时%ld分",iHours,iMinute];

}else{

NSInteger iMinute = (lTime-iDays*86400-iHours*3600)/60;

return [NSString stringWithFormat:@"剩%ld天%ld小时%ld分",iDays,iHours,iMinute];

}

}

// 判断是否有效身份证号码

+ (BOOL)isIDNumberValid:(NSString*)idnumber

{

if ([idnumber length] != 15 &&

[idnumber length] != 18)

{

return NO;

}

NSLog(@"%@",idnumber);

int provCode = [[idnumber substringToIndex:2] intValue];

if ( provCode < 11  ||

(provCode > 15 && provCode < 21) ||

(provCode > 23 && provCode < 31) ||

(provCode > 37 && provCode < 41) ||

(provCode > 46 && provCode < 50) ||

(provCode > 54 && provCode < 61) ||

(provCode > 65) )

{

// 行政区码错误

NSLog(@"province code error");

return NO;

}

NSUInteger len = [idnumber length];

int year = 0;

int month = 0;

int day = 0;

if (len == 15)

{

year = [[idnumber substringWithRange:NSMakeRange(6, 2)] intValue];

if (year > 20)

{

year = 1900 + year;

}

else

{

year = 2000 + year;

}

month = [[idnumber substringWithRange:NSMakeRange(8, 2)] intValue];

day = [[idnumber substringWithRange:NSMakeRange(10, 2)] intValue];

}

else if (len == 18)

{

year = [[idnumber substringWithRange:NSMakeRange(6, 4)] intValue];

month = [[idnumber substringWithRange:NSMakeRange(10, 2)] intValue];

day = [[idnumber substringWithRange:NSMakeRange(12, 2)] intValue];

}

if (year < 1900 ||

year > 2200)

{

// 年份错误

NSLog(@"year error");

return NO;

}

if (month < 1 ||

month > 12)

{

// 月份错误

NSLog(@"month error");

return NO;

}

if (day < 1 ||

day > 31)

{

// 日期错误

NSLog(@"day error");

return NO;

}

// 检查最后一位

NSRange xrange = [idnumber rangeOfString:@"x"];

NSRange Xrange = [idnumber rangeOfString:@"X"];

if ((xrange.length == 1 && xrange.location != len - 1) ||

(Xrange.length == 1 && Xrange.location != len - 1))

{

NSLog(@"x position error");

return NO;

}

if (len == 15)

{

return YES;

}

int Wi[17] = {7, 9, 10, 5, 8 ,4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};

int lastBit[11] = {1, 0, ‘x‘, 9, 8, 7, 6, 5, 4, 3, 2};

int sum = 0;

NSMutableString * idnum18 = [[NSMutableString alloc] initWithString:idnumber];

for (int i = 0; i < 17; i++)

{

int nVal = [[idnum18 substringWithRange:NSMakeRange(i, 1)] intValue];

sum += nVal*Wi[i];

}

int ret = sum%11;

NSLog(@"ret=%d",ret);

if ((ret == 2 && [[[idnum18 substringWithRange:NSMakeRange(17, 1)] lowercaseString] isEqualToString:@"x"]) ||

lastBit[ret] == [[idnum18 substringWithRange:NSMakeRange(17, 1)] intValue])

{

// [idnum18 release];

return YES;

}

else

{

// 校验码错误

NSLog(@"verify code error");

// [idnum18 release];

return NO;

}

// [idnum18 release];

return NO;

}

/*手机号码验证 MODIFIED BY HELENSONG*/

+ (BOOL)isMobileNumber:(NSString *)mobileNum

{

/**

* 手机号码

* 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188,1705

* 联通:130,131,132,152,155,156,185,186,1709

* 电信:133,1349,153,180,189,1700

*/

NSString * MOBILE = @"^1((3//d|5[0-35-9]|8[025-9])//d|70[059])\\d{7}$";//总况

/**

10         * 中国移动:China Mobile

11         * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188,1705 178

12         */

NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[23478])\\d|705|178[0-9])\\d{7}$";

/**

15         * 中国联通:China Unicom

16         * 130,131,132,152,155,156,185,186,1709

17         */

NSString * CU = @"^1((3[0-2]|5[256]|8[56])\\d|709|76[0-9])\\d{7}$";

/**

20         * 中国电信:China Telecom

21         * 133,1349,153,180,189,1700

22         */

NSString * CT = @"^1((33|53|8[019])\\d|349|700|77[0-9])\\d{7}$";

/**

25 * 大陆地区固话及小灵通

26 * 区号:010,020,021,022,023,024,025,027,028,029

27 * 号码:七位或八位

28 */

// NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";

NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];

NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];

NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];

if (([regextestmobile evaluateWithObject:mobileNum] == YES)

|| ([regextestcm evaluateWithObject:mobileNum] == YES)

|| ([regextestct evaluateWithObject:mobileNum] == YES)

|| ([regextestcu evaluateWithObject:mobileNum] == YES))

{

return YES;

}

else

{

return NO;

}

}

//以上集合一起,并兼容14开头的

//+ (BOOL)isMobileNumber:(NSString *)mobileNum

//{

//    NSString * phoneRegex = @"^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$";

//    BOOL isMatch = [mobileNum isMatchedByRegex:phoneRegex];

//    return isMatch;

//}

@end

时间: 2024-10-14 14:56:50

获取倒计时距离某一时间点的时间,判断身份证,电话号码格式是否正确的简单封装的相关文章

JavaScript基础 计算现在时间 距离 过去一时间 相差多少天

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

JavaScript基础 计算现在时间 距离 未来一时间 相差多少天

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

对安卓获取验证码倒计时60秒Button按钮的简单封装

鉴于经常在注册获取验证码时候需要一个倒计时按钮觉得很麻烦,抽点时间写了一个TimeButton 键鼠下特性, TimeButton使用的时候跟普通Button一样没有冲突, TimeButton在倒计时的时候返回了如果没有超过剩下的时间再次进入会继续跑时哦, TimeButton里面完成了按钮的点击显示和倒计时逻辑, TimeButton在activity销毁后也会销毁不会像线程一样还在后台跑, TimeButton的显示文字和倒计时都可以自行设置当然也有默认的, 原创地址 http://wri

Python网络编程——设定并获取默认的套接字超时时间

Sometimes,you need to manipulate the default values of certain properties of a socket library, for example, the socket timeout. 设定并获取默认的套接字超时时间. 1.代码 1 import socket 2 3 4 def test_socket_timeout(): 5 s = socket.socket(socket.AF_INET, socket.SOCK_STR

Java Calendar获取年、月、日、时间

Java Calendar获取年.月.日.时间 Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));    //获取东八区时间 int year = c.get(Calendar.YEAR);    //获取年  int month = c.get(Calendar.MONTH) + 1;   //获取月份,0表示1月份  int day = c.get(Calendar.DAY_OF_MONTH);

MD5加密&获取用户IP、ID、系统时间

1.通常我们在数据库中保存用户信息的时候需要把密码和一些其他重要信息,用加密的方式保存,这就会用到下面的MD5加密程序段 MessageDigest md=MessageDigest.getInstance("MD5"); md.update("被加密的字符串".getBytes()); String md5sString =new BigInteger(1,md.digest()).toString(16); 2.获取用户IP,ID,系统时间语句 String u

Android开发之获取系统12/24小时制的时间

//通过DateFormat获取系统的时间 String currentTime=DateFormat.format("yyyy-MM-dd hh-mm-ss", new Date()).toString(); currentTime="通过DateFormat获取的时间:\n"+currentTime; //通过SimpleDateFormat获取24小时制时间 SimpleDateFormat sdf=new SimpleDateFormat("yyy

js获取滚动条距离浏览器顶部,底部的高度,兼容ie和firefox

做web开发经常会碰到需要获取浏览器的滚动条与顶部和底部的距离,然后做相应的处理动作.下面作者就如何通过js来获取浏览器滚动条距离浏览器顶部和底部的高度做一下分享,这个是同时兼容ie和firefox的. 获取窗口可视范围的高度 function getClientHeight(){ var clientHeight=0; if(document.body.clientHeight&&document.documentElement.clientHeight){ var clientHeig

获取系统完成任务所需要的后台时间

有没有一种情况,当软件退出后,你还是需要运行一点东西,或者是需要很长时间来运行的一个代码.此时,就需要向后台申请时间了.但是官司方资料. 根据苹果文档中关于后台执行的描述,任何app都有10分钟左右的后台任务执行时间. 10分钟后,app会被iOS强行挂起. 但是,有5类app允许有“无限的”后台运行时间: 1.  Audio. 2.  Location/GPS. 3.  VoIP. 4.  Newsstand. 5.  Exernal Accessory . 你可以将任何app声明为上述5种类