iOS 時間戳 詳解

2021-07-11 06:50:17 字數 2782 閱讀 4419

應用中設定一般會存在這樣的設定,如夜間勿擾模式,從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

returnno;

}

/**

* @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 ...