iOS 获取当前时间及时间戳的互换

本文介绍iOS开发中处理时间的方法,包括获取年月日时分秒、判断系统时间格式、字符串与时间戳转换等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发中,难免会遇到使用当前时间,比如实现网络请求上传报文、预约、日历等功能。

1. 获取年月日时分秒

实现代码:

NSDate *date1 = [NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateStyle:NSDateFormatterMediumStyle];
[formatter1 setTimeStyle:NSDateFormatterShortStyle];
[formatter1 setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
NSString *DateTime1 = [formatter1 stringFromDate:date1];

str就是我们需要的时间,代码中("YYYY-MM-dd HH:mm:ss")这个时间的样式是可以根据我们的需求进行修改的,比如: 20170901112253 ==> ("YYYYMMddHHmmss")

如果只想获取年月,代码如下:

NSDate *date1 = [NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateStyle:NSDateFormatterMediumStyle];
[formatter1 setTimeStyle:NSDateFormatterShortStyle];
[formatter1 setDateFormat:@"YYYY-MM"];
NSString *DateTime1 = [formatter1 stringFromDate:date1];
2. 区分系统时间是24小时制还是12小时制

代码如下:

//获取系统是24小时制或者12小时制
NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
NSRange contains = [formatStringForHours rangeOfString:@"a"];
BOOL thisAMPM = contains.location != NSNotFound;

thisAMPM==TURE为12小时制,否则为24小时制

3. 字符串转时间戳

代码如下:

//字符串转时间戳
//datenow为当前时间
NSString *timeSp = [NSString stringWithFormat:@"%d", (long)[datenow timeIntervalSince1970]];  
//时间戳的值
NSLog(@"timeSp:%@",timeSp); 
4. 时间戳转字符串

代码如下:

//时间戳转字符串
NSString *timeStr = "1506064573";
NSTimeInterval interval=[timeStr doubleValue] / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
//实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
//设定时间格式,这里可以设置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *currentDateStr = [dateFormatter stringFromDate:date];
### Java 获取当前时间时间戳方法 在 Java 中,获取当前时间时间戳可以通过多种方式实现。以下是几种常见且推荐的方法: #### 方法一:使用 `System.currentTimeMillis()` 这是最简单和常用的方法之一,它返回自 1970 年 1 月 1 日 00:00:00 UTC 开始的当前时间的毫秒数。 ```java long currentTimestamp = System.currentTimeMillis(); System.out.println("当前时间时间戳为: " + currentTimestamp); ``` 此方法适用于需要毫秒级精度的场景[^3]。 #### 方法二:使用 `Date` 类的 `getTime()` 方法 `Date` 类的 `getTime()` 方法同样可以返回当前时间时间戳,单位为毫秒。 ```java import java.util.Date; Date date = new Date(); long timeStamp2 = date.getTime(); System.out.println("当前时间时间戳为: " + timeStamp2); ``` 该方法与 `System.currentTimeMillis()` 的功能相同,但 `Date` 类可能更适合需要日期对象的场景[^2]。 #### 方法三:使用 `Instant` 类(Java 8 及以上版本) Java 8 引入了新的日期和时间 API,其中 `Instant` 类可以方便地获取当前时间时间戳。 ```java import java.time.Instant; long currentTimestamp = Instant.now().toEpochMilli(); System.out.println("当前时间时间戳为: " + currentTimestamp); ``` `Instant.now().toEpochMilli()` 返回的是自 1970 年 1 月 1 日 00:00:00 UTC 开始的毫秒数,适合需要高精度时间戳的场景[^1]。 #### 方法四:使用 `ZonedDateTime` 类(Java 8 及以上版本) 如果需要考虑时区问题,可以使用 `ZonedDateTime` 类来获取当前时间时间戳。 ```java import java.time.ZonedDateTime; long currentTimestamp = ZonedDateTime.now().toEpochSecond(); System.out.println("当前时间时间戳为: " + currentTimestamp); ``` 需要注意的是,`ZonedDateTime.now().toEpochSecond()` 返回的是秒级时间戳,若需要毫秒级时间戳,则需结合其他方法进行转换[^3]。 --- ### 注意事项 - 不同方法返回的时间戳单位不同,`System.currentTimeMillis()` 和 `Instant.now().toEpochMilli()` 返回毫秒级时间戳,而 `ZonedDateTime.now().toEpochSecond()` 和 `Instant.now().getEpochSecond()` 返回秒级时间戳。 - 在多线程环境中,建议使用 `System.nanoTime()` 或 `Instant` 类以确保时间戳的唯一性和高精度。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值