應用中設定一般會存在這樣的設定,如夜間勿擾模式,從8:00-23:00,此時如何判斷當前時間是否在該時間段內。難點主要在於如何用nsdate生成乙個8:00的時間和23:00的時間,然後用當前的時間跟這倆時間作對比就好了。
下面提供兩條思路:
法1.用nsdate生成當前時間,然後轉為字串,從字串中取出當前的年、月、日,然後再拼上時、分、秒,然後再將拼接後的字串轉為nsdate,最後用當前的時間跟自己生成的倆nsdate的時間點比較。(該方法比較笨,也不難,但看起來有點太菜了,看上去不怎麼規範)
法2.用nsdatecomponents、nscalendar確定倆固定的nsdate格式的時間,然後再進行比較(此方法比較裝逼,其實跟拼字串的方法複雜度差不了多少,但看起來比較規範,像是大神寫的)。?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @brief 判斷當前時間是否在fromhour和tohour之間。如,fromhour=8,tohour=23時,即為判斷當前時間是否在8:00-23:00之間
*/
- (bool)isbetweenfromhour:(nsinteger)fromhour tohour:(nsinteger)tohour
return
no;
}
/**
* @brief 生成當天的某個點(返回的是倫敦時間,可直接與當前時間[nsdate date]比較)
* @param hour 如hour為「8」,就是上午8:00(本地時間)
*/
- (nsdate *)getcustomdatewithhour:(nsinteger)hour
ios專案中會遇到時間轉的問題,當從服務端傳回時間到客戶端,而這個時間確是時間戳,並且是13位,如果是普通的字串比如「2015-09-24 19:00:000」 這樣轉化是比較簡單,但是時間戳不是這樣的,ios生成的時間戳是10位,所以說需要進行轉換。以下有幾種方式:
第一種:
nsstring * timestampstring = @"1423189125874";
nsdate *date = [nsdate datewithtimeintervalsince1970:[timestampstring doublevalue] / 1000];
nslog(@"%f", ([date timeintervalsince1970] * 1000.0));
第二種:
nsstring * timestampstring = @"1423189125874";
nstimeinterval _interval=[[timestampstring substringtoindex:10] doublevalue];
nsdate *date = [nsdate datewithtimeintervalsince1970:_interval];
nslog(@"%@", date);
nsstring * timestampstring = @"1423189125874";
nstimeinterval _interval=[timestampstring doublevalue] / 1000.0;
nsdate *date = [nsdate datewithtimeintervalsince1970:_interval];
nsdateformatter *objdateformat = [[nsdateformatter alloc] init];
[objdateformat setdateformat:@"yyyy-mm-dd hh:mm:ss.sss"];
nslog(@"%@", [objdateformat stringfromdate: date]);
MySQLTIMESTAMP 時間戳 詳解
在建立表時如果表中有乙個字段型別為timestamp,則該字段預設的生成語句為 create table test id int 11 default null,ctime timestamp not null default current timestamp on update current ...
iOS時間戳的處理
通常我們從後台獲取到的時間一般都為時間戳,有得為13位的,而有得則為10位,這兩者在處理上有點不同。1.時間戳為13位的處理方法 13位的需要除以1000 nsdateformatter formatter nsdateformatter alloc init formatter setdatefo...
iOS 時間戳TimeStamp處理
我獲得這個時間戳是得想除以1000再處理的,看看你們的需要先除多少再處理 時間戳處理 nsinteger time timestamp 1000 nsnumber timer nsnumber numberwithinteger time nstimeinterval interval timer ...