1. 程式人生 > >iOS開發時間戳與時間NSDate,時區的轉換,漢字與UTF8,16進制的轉換

iOS開發時間戳與時間NSDate,時區的轉換,漢字與UTF8,16進制的轉換

ring fst unsigned rac ios1 let gen 十進制 cin

http://blog.sina.com.cn/s/blog_68661bd80101njdo.html

標簽:

ios時間戳

ios開發時間戳

ios16進制轉中文

ios開發utf8轉中文

ios漢字轉utf8和16進

//獲取當前系統的時間戳
+(long)getTimeSp{
long time;
NSDate *fromdate=[NSDate date];
time=(long)[fromdate timeIntervalSince1970];
return time;
}

//將時間戳轉換成NSDate
+(NSDate *)changeSpToTime:(NSString*)spString{
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:[spString intValue]];
return confromTimesp;
}
//將時間戳轉換成NSDate,加上時區偏移
+(NSDate*)zoneChange:(NSString*)spString{
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:[spString intValue]];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate:confromTimesp];
NSDate *localeDate = [confromTimesp dateByAddingTimeInterval: interval];
return localeDate;
}
//比較給定NSDate與當前時間的時間差,返回相差的秒數
+(long)timeDifference:(NSDate *)date{
NSDate *localeDate = [NSDate date];
long difference =fabs([localeDate timeIntervalSinceDate:date]);
return difference;
}
//將NSDate按yyyy-MM-dd HH:mm:ss格式時間輸出
+(NSString*)nsdateToString:(NSDate *)date{
NSDateFormatter *dateFormat=[[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString* string=[dateFormat stringFromDate:date];
return string;
}
//將yyyy-MM-dd HH:mm:ss格式時間轉換成時間戳
+(long)changeTimeToTimeSp:(NSString *)timeStr{
long time;
NSDateFormatter *format=[[NSDateFormatter alloc] init];
[format setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *fromdate=[format dateFromString:timeStr];
time= (long)[fromdate timeIntervalSince1970];
[format release];
return time;
}
//獲取當前系統的yyyy-MM-dd HH:mm:ss格式時間
+(NSString *)getTime{
NSDate *fromdate=[NSDate date];
NSDateFormatter *dateFormat=[[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString* string=[dateFormat stringFromDate:fromdate];
return string;
}

點擊下載DEMOhttp://www.kuaipan.cn/file/id_30491149655345667.htm 訪問密碼:At7uJx
//發送數據時,16進制數->Byte數組->NSData,加上校驗碼部分
+(NSData *)hexToByteToNSData:(NSString *)str{
int j=0;
Byte bytes[[str length]/2];
for(int i=0;i<[str length];i++)
{
int int_ch; ///兩位16進制數轉化後的10進制數
unichar hex_char1 = [str characterAtIndex:i]; ////兩位16進制數中的第一位(高位*16)
int int_ch1;
if(hex_char1 >= ‘0‘ && hex_char1 <=‘9‘)
int_ch1 = (hex_char1-48)*16; //// 0 的Ascll - 48
else if(hex_char1 >= ‘A‘ && hex_char1 <=‘F‘)
int_ch1 = (hex_char1-55)*16; //// A 的Ascll - 65
else
int_ch1 = (hex_char1-87)*16; //// a 的Ascll - 97
i++;
unichar hex_char2 = [str characterAtIndex:i]; ///兩位16進制數中的第二位(低位)
int int_ch2;
if(hex_char2 >= ‘0‘ && hex_char2 <=‘9‘)
int_ch2 = (hex_char2-48); //// 0 的Ascll - 48
else if(hex_char2 >= ‘A‘ && hex_char2 <=‘F‘)
int_ch2 = hex_char2-55; //// A 的Ascll - 65
else
int_ch2 = hex_char2-87; //// a 的Ascll - 97
int_ch = int_ch1+int_ch2;
bytes[j] = int_ch; ///將轉化後的數放入Byte數組裏
// if (j==[str length]/2-2) {
// int k=2;
// int_ch=bytes[0]^bytes[1];
// while (k
// int_ch=int_ch^bytes[k];
// k++;
// }
// bytes[j] = int_ch;
// }
j++;
}
NSData *newData = [[NSData alloc] initWithBytes:bytes length:[str length]/2 ];
NSLog(@"%@",newData);
return newData;
}
//接收數據時,NSData->Byte數組->16進制數
+(NSString *)NSDataToByteTohex:(NSData *)data{
Byte *bytes = (Byte *)[data bytes];
NSString *hexStr=@"";
for(int i=0;i<[data length];i++)
{
NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16進制數
if([newHexStr length]==1)
hexStr = [NSString stringWithFormat:@"[email protected]
/* */%@",hexStr,newHexStr];
else
hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
NSLog(@"hexStr:%@",hexStr);
return hexStr;
}
//將漢字字符串轉換成16進制字符串
+(NSString *)chineseToHex:(NSString*)chineseStr{
NSStringEncoding encodingGB18030= CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSData *responseData =[chineseStr dataUsingEncoding:encodingGB18030 ];
NSString *string=[sendSocket NSDataToByteTohex:responseData];
return string;
}
//將漢字字符串轉換成UTF8字符串
+(NSString *)chineseToUTf8Str:(NSString*)chineseStr{
NSStringEncoding encodingUTF8 = NSUTF8StringEncoding;
NSData *responseData2 =[chineseStr dataUsingEncoding:encodingUTF8 ];
NSString *string=[sendSocket NSDataToByteTohex:responseData2];
return string;
}
//將十六進制字符串轉換成漢字
+(NSString*)changeLanguage:(NSString*)chinese{
NSString *strResult;
NSLog(@"chinese:%@",chinese);
if (chinese.length%2==0) {
//第二次轉換
NSData *newData = [sendSocket hexToByteToNSData:chinese];
unsigned long encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
strResult = [[NSString alloc] initWithData:newData encoding:encode];
NSLog(@"strResult:%@",strResult);
}else{
NSString *strResult = @"已假定是漢字的轉換,所傳字符串的長度必須是4的倍數!";
NSLog(@"%@",strResult);
return NULL;
}
return strResult;
}
/////////////GBK,漢字,GB2312,ASCII碼,UTF8,UTF16
//UTF8字符串轉換成漢字
+(NSString*)changeLanguageUTF8:(NSString*)chinese{
NSString *strResult;
NSData *data=[sendSocket hexToByteToNSData:chinese];
strResult=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
return strResult;
}
//將十六進制數轉換成十進制
-(NSString *)ToHex:(int)tmpid
{
NSLog(@"tmpid:%d",tmpid);
NSString *nLetterValue;
NSString *str =@"";
int ttmpig;
for (int i = 0; i<9; i++) {
ttmpig=tmpid;
tmpid=tmpid/16;
switch (ttmpig)
{
case 10:
nLetterValue =@"A";break;
case 11:
nLetterValue =@"B";break;
case 12:
nLetterValue =@"C";break;
case 13:
nLetterValue =@"D";break;
case 14:
nLetterValue =@"E";break;
case 15:
nLetterValue =@"F";break;
default:nLetterValue=[[NSString alloc]initWithFormat:@"%i",ttmpig];
}
str = [nLetterValue stringByAppendingString:str];
NSLog(@"str:%@",str);
if (tmpid == 0) {
break;
}
}
return str;
}
//Unicode轉化為漢字
+ (NSString *)replaceUnicode1:(NSString *)unicodeStr {
NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u"withString:@"\\U"];
NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"""withString:@"\\""];
NSString *tempStr3 = [[@"""stringByAppendingString:tempStr2]stringByAppendingString:@"""];
NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
NSString* returnStr = [NSPropertyListSerialization propertyListFromData:tempData mutabilityOption:NSPropertyListImmutable format:NULL errorDescription:NULL];
return [returnStr stringByReplacingOccurrencesOfString:@"\\r\\n"withString:@"\n"];
}

//iso8859-1 到 unicode編碼轉換

+ (NSString *)changeISO88591StringToUnicodeString:(NSString *)iso88591String

{

NSMutableString *srcString = [[[NSMutableString alloc]initWithString:iso88591String] autorelease];

[srcString replaceOccurrencesOfString:@"&" withString:@"&" options:NSLiteralSearch range:NSMakeRange(0, [srcString length])];

[srcString replaceOccurrencesOfString:@"&加行末位兩個字符" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [srcString length])];//#x

NSMutableString *desString = [[[NSMutableString alloc]init] autorelease];

NSArray *arr = [srcString componentsSeparatedByString:@";"];

for(int i=0;i<[arr count]-1;i++){

NSString *v = [arr objectAtIndex:i];

char *c = malloc(3);

int value = [StringUtil changeHexStringToDecimal:v];//將二進制轉化為十進制

c[1] = value &0x00FF;

c[0] = value >>8 &0x00FF;

c[2] = ‘‘;

[desString appendString:[NSString stringWithCString:c encoding:NSUnicodeStringEncoding]];

free(c);

}

return desString;

}

NSString轉換成URL編碼

stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding

還原:

stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding

//十六進制數轉十進制數,因為蘋果采用的是小端模式,取第一個字符是取最高位數,取最後一個字符是個位數。所以需要乘以16的tmpid.length-i-1次方

-(int)TotexHex1:(NSString*)tmpid

{

int int_ch1=0;

for(int i=0;i

unichar hex_char = [tmpid characterAtIndex:i];

int int_ch;

if(hex_char >= ‘0‘ && hex_char <=‘9‘)

int_ch = (hex_char-48); //// 0 的Ascll - 48

else if(hex_char >= ‘A‘ && hex_char <=‘F‘)

int_ch = (hex_char-55); //// A 的Ascll - 65

else

int_ch = (hex_char-87); //// a 的Ascll - 97

int_ch=int_ch*pow( 16, tmpid.length-i-1 );//pow的第二個參數根據小端模式或者大端模式調整,

int_ch1 = int_ch1+int_ch;

NSLog(@"%d",int_ch1);

}

return int_ch1;

}

#pragma mark -- 漢字--->16進制

// 壁燈 e5a381e781af

- (NSString *)hexStringFromString:(NSString *)string{

NSData *myD = [string dataUsingEncoding:NSUTF8StringEncoding];

Byte *bytes = (Byte *)[myD bytes];

//下面是Byte 轉換為16進制。

NSString *hexStr=@"";

for(int i=0;i<[myD length];i++)

{

NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16進制數

if([newHexStr length]==1)

hexStr = [NSString stringWithFormat:@"[email protected]%@",hexStr,newHexStr];

else

hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];

}

return hexStr;

}

iOS開發時間戳與時間NSDate,時區的轉換,漢字與UTF8,16進制的轉換