iOS 时间戳的转换

在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。
例如:

//实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//设定时间格式,这里可以设置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//用[NSDate date]可以获取系统当前时间
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
//输出格式为:2010-10-27 10:22:13
NSLog(@"%@",currentDateStr);
//alloc后对不使用的对象别忘了release
[dateFormatter release];

 


字符说明

(:)

时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由您的应用程序的当前区域性值确定。

(/)

日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由您的应用程序的当前区域性确定。

(%)

用于表明不论尾随什么字母,随后字符都应该以单字母格式读取。也用于表明单字母格式应以用户定义格式读取。有关更多详细信息,请参见下面的内容。

d

将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %d。

dd

将日显示为带前导零的数字(如 01)。

EEE

将日显示为缩写形式(例如 Sun)。

EEEE

将日显示为全名(例如 Sunday)。

M

将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %M。

MM

将月份显示为带前导零的数字(例如 01/12/01)。

MMM

将月份显示为缩写形式(例如 Jan)。

MMMM

将月份显示为完整月份名(例如 January)。

gg

显示时代/纪元字符串(例如 A.D.)

h

使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,请使用 %h。

hh

使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。

H

使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %H。

HH

使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。

m

将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m。

mm

将分钟显示为带前导零的数字(例如 12:01:15)。

s

将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s。

ss

将秒显示为带前导零的数字(例如 12:15:05)。

f

显示秒的小数部分。例如,ff 将精确显示到百分之一秒,而 ffff 将精确显示到万分之一秒。用户定义格式中最多可使用七个 f 符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f。

t

使用 12 小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M 之间的任一小时显示大写的 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。

tt

对于使用 12 小时制的区域设置,对中午之前任一小时显示大写的 AM,对中午到 11:59 P.M 之间的任一小时显示大写的 PM。

对于使用 24 小时制的区域设置,不显示任何字符。

y

将年份 (0-9) 显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 %y。

yy

以带前导零的两位数字格式显示年份(如果适用)。

yyy

以四位数字格式显示年份。

yyyy

以四位数字格式显示年份。

z

显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 %z。

zz

显示带前导零的时区偏移量(例如 -08)

zzz

显示完整的时区偏移量(例如 -08:00)

 


格式显示

M/d/yy

12/7/58

d-MMM

7-Dec

d-MMMM-yy

7-December-58

d MMMM

7 December

MMMM yy

December 58

hh:mm tt

08:50 PM

h:mm:ss t

8:50:35 P

H:mm

20:50

H:mm:ss

20:50:35

M/d/yyyy H:mm

12/7/1958 20:50

 

IOS NSDate日期操作总结

1 // 当前时间创建NSDate

        NSDate *myDate = [NSDate date];

        NSLog(@"myDate = %@",myDate);

2 //从现在开始的24小时

        NSTimeInterval secondsPerDay = 24*60*60;

        NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];

        NSLog(@"myDate = %@",tomorrow);

3//根据已有日期创建日期

         NSTimeInterval secondsPerDay1 = 24*60*60;

        NSDate *now = [NSDate date];

        NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];

        NSLog(@"yesterDay = %@",yesterDay);

 

 4//比较日期

        BOOL sameDate = [now isEqualToDate:yesterDay];

        NSLog(@"sameDate = %lu",sameDate);

        4.1//获取较早的日期

        NSDate *earlierDate = [yesterDay earlierDate:now];

        NSLog(@"earlierDate  = %@",earlierDate);

        4.2//较晚的日期

        NSDate *laterDate = [yesterDay laterDate:now];

        NSLog(@"laterDate  = %@",laterDate);

 

        //两个日期之间相隔多少秒

        NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now];

        NSLog(@"secondsBetweenDates=  %lf",secondsBetweenDates);

        //通过NSCALENDAR类来创建日期

        NSDateComponents *comp = [[NSDateComponentsalloc]init];

        [comp setMonth:06];

        [comp setDay:01];

        [comp setYear:2001];

        NSCalendar *myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];

        NSDate *myDate1 = [myCal dateFromComponents:comp];

        NSLog(@"myDate1 = %@",myDate1);

 

        //从已有日期获取日期

        unsigned units  = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;

        NSDateComponents *comp1 = [myCal components:units fromDate:now];

        NSInteger month = [comp1 month];

        NSInteger year = [comp1 year];

        NSInteger day = [comp1 day];

        //NSDateFormatter实现日期的输出

        NSDateFormatter *formatter = [[NSDateFormatteralloc]init];

        [formatter setDateStyle:NSDateFormatterFullStyle];//直接输出的话是机器码

        //或者是手动设置样式[formatter setDateFormat:@"yyyy-mm-dd"];

        NSString *string = [formatter stringFromDate:now];

        NSLog(@"string = %@",string);

        NSLog(@"formater = %@",formatter);

 

 

//获取日期格式对象

- (NSDateFormatter *)dateFormatter {

if (dateFormatter == nil) {

dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

}

return dateFormatter;

}

 

NSDate与NSDateFormatter的相关用法

 

1.NSDateFormatter配合NSDate与NSString之间的转化
  NSDateFormatter有下面2个方法:
  - (NSString *)stringFromDate:(NSDate *)date;//NSDate转NSString
  - (NSDate *)dateFromString:(NSString *)string;//NSString转NSDate
 
e.g.
 NSString *dateString=@"1900-01-01";
 NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
 [dateFormatter setDateFormat:@"yyyy-MM-dd"];
 NSDate *date=[dateFormatter dateFromString:dateString];
 [dateFormatter release];

 NSString转NSDate与上面类似
 NSString *dateString=[dateFormatter dateFromString:[NSDate date]];

2.NSDateFormatter 的一些格式介绍
  [dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];EEEE为星期几,EEE为周几
  [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  [dateFormatter setDateFormat:@"yyyy年MMMMd日"];//MMMM 为xx月,一个d可以省去01日前的0

3.NSString转NSDate少一天的解决办法
 用下面这种格式化方式 
  1.[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

  2.
   NSCalendar *calendar = [NSCalendar currentCalendar];
   NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit |                                  NSYearCalendarUnit) fromDate:[NSDate date]];
   NSDate *todayDate = [calendar dateFromComponents:components];

转载于:https://www.cnblogs.com/MyBlogZH/p/5828763.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务架构下分布式事务解决方案 —— 阿里GTS

1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。Hailo有160个不同服务构成&…

重要消息丨.NET Core 3.1 将于今年12月13日结束支持

点击上方蓝字关注我们(本文阅读时间:5分钟).NET Core 3.1 将于 2022 年 12 月 13 日结束支持。此后,Microsoft 将不再为 .NET Core 3.1 提供服务更新或技术支持。我们建议尽快迁移到 .NET 6。如果您在支持日期结束后仍在使用 .NET Core 3.1&a…

产品设计的三大原则

1.它有用吗? 如果我们必须从这三个特性中选择一个作为最重要的,那就是有用性。 首要的是,一个产品必须有用。如果它无用,其它任何东西都是不相关的,因为没有人会需要它。很明显,有用性和可享用性看上去一样重要&#…

常用的17个运维监控系统

1. Zabbix Zabbix 作为企业级的网络监控工具,通过从服务器,虚拟机和网络设备收集的数据提供实时监控,自动发现,映射和可扩展等功能。 Zabbix的企业级监控软件为用户提供内置的Java应用服务器监控,硬件监控&#xff0c…

关于html-三角的制作

因为最近看到别人写的不错的样式,所以就想自己实现,但是呢用到了一个三角形,所以稍微研究一下。效果是这样的:注意是下边那个浅色三角,感觉书签的效果有木有。看着很有层次感。接下来就是实现了,利用border…

ABP中的数据过滤器

本文首先介绍了ABP内置的软删除过滤器(ISoftDelete)和多租户过滤器(IMultiTenant),然后介绍了如何实现一个自定义过滤器,最后介绍了在软件开发过程中遇到的实际问题,同时给出了解决问题的一个未必最优的思路。一.预定义过滤器ABP中的数据过滤…

ActiveMQ与spring整合

2019独角兽企业重金招聘Python工程师标准>>> 1 生产者 第一步&#xff1a;引用相关的jar包。 <dependency> <groupId>org.springframework</groupId><artifactId>spring-jms</artifactId> </dependency> <dependency><…

最新远程部署运维工具汇总

一&#xff0e;Puppet 转载https://baike.baidu.com/item/puppet/5109503?fraladdin puppet是一种Linux、Unix、windows平台的集中配置管理系统&#xff0c;使用自有的puppet描述语言&#xff0c;可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体…

Kali Linux 2016.2初体验使用总结

Kali Linux 2016.2初体验使用总结Kali Linux官方于8月30日发布Kali Linux 2016的第二个版本Kali Linux 2016.2。该版本距离Kali Linux 2016.1版本发布&#xff0c;已经有7个月。在这期间&#xff0c;在Kali Linux 2016.2版本发布的这段时间&#xff0c;Kali Linux官方增补了94个…

Kafka入门教程:学习总结目录索引

【Kafka】| 总结/Edison ZhouEdison总结了Kafka的学习征途系列&#xff0c;特意整理了一份目录索引&#xff0c;希望对你有帮助。0Kafka学习路径在学习Kafka的途中&#xff0c;我总结了一个系列的Kafka学习征途系列教程&#xff0c;它只选取了我认为最实用的部分整理出来&#…

javaweb学习中的路径问题

1. 项目结构 2. 客户端路径 1. 超链接 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/…

步步为营-11-ListT泛型的简单练习

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 集合简单练习 {class Program{static void Main(string[] args){}private static void Test3(){//奇偶分拣,奇数在前偶数在后List<int>…

SPI 与 API的区别

背景 Java 中区分 API 和 SPI&#xff0c;通俗的讲&#xff1a;API 和 SPI 都是相对的概念&#xff0c;他们的差别只在语义上&#xff0c;API 直接被应用开发人员使用&#xff0c;SPI 被框架扩展人员使用 理解 API &#xff08;Application Programming Interface&#xff09; …

JS---------正则表达式

2019独角兽企业重金招聘Python工程师标准>>> 1.正则表达式的创建方式&#xff1a; 1.1 var reg new RegExp(pattern); 1.2 var reg /^正则规则$/ 2.正则规则&#xff1a; 2.1 [0-9] 代表数字 [A-Z] 代表大写字母 [a-z] 代表小写字母 [A-z] 代表字母 \w 查找单词字…

关于缓存异常:缓存雪崩、击穿、穿透的解决方案

关于缓存雪崩、击穿、穿透的解决方案 前言缓存雪崩 缓存雪崩的原因解决方案缓存击穿 解决方案缓存穿透 解决方案 布隆过滤器 布隆过滤器原理布隆过滤器如何使用在Java中使用布隆过滤器前言 关于缓存异常&#xff0c;我们常见的有三个问题&#xff1a;缓存雪崩、缓存击穿、缓存穿…

RobotFramework 自动化测试实战进阶篇

工具 Robotframework, 采用PO设计模式 PO模型 PO模型即Page Objects&#xff0c;直译意思就是“页面对象”&#xff0c;通俗的讲就是把一个页面&#xff0c;或者说把一个页面的某个区域当做一个对象&#xff0c;通过封装这个对象可以实现调用。 PO设计的好处 代码复用&…

Android6 0权限机制(一):介绍

本篇文章已授权微信公众号 hongyangAndroid &#xff08;鸿洋&#xff09;独家发布 Android6.0权限机制&#xff08;一&#xff09;&#xff1a;介绍 Android6.0权限机制&#xff08;二&#xff09;&#xff1a;封装 Android6.0权限机制&#xff08;三&#xff09;&#xff1a;…

MAX10 ADC的一些基知识

MAX10 ADC 的一些知识 1、 MAX 10 内部集成的12bit SAR ADC的特点为&#xff1a; a、 采样速率高达1Mhz. b、 模拟通道多达18个&#xff0c;单个ADC多达17个&#xff0c;双ADC器件中有16个双功能ADC通道&#xff0c;2个专用的ADC。 c、 提供单端测…

Blazor University (42)JavaScript 互操作 —— 生命周期和内存泄漏

原文链接&#xff1a;https://blazor-university.com/javascript-interop/calling-dotnet-from-javascript/lifetimes-and-memory-leaks/生命周期和内存泄漏源代码[1]如果我们运行我们在从 Javascript 调用 .NET 中创建的应用程序并检查浏览器控制台窗口&#xff0c;我们会看到…

深入浅出聊布隆过滤器(Bloom Filter)

之前在网上看到过这么一段话&#x1f447; Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different facility and benefits. To properly use the …