`

时间运算之Calendars

OS 
阅读更多

Creating a Calendar

 

 

1:You create a calendar object by specifying an identifier for the calendar you want. Mac OS X provides data for several different calendars—Buddhist, Chinese, Gregorian, Hebrew, Islamic, and Japanese—specified by constants in NSLocale.

 

 

NSCalendar *japaneseCalendar = [[NSCalendar alloc]
        initWithCalendarIdentifier:NSJapaneseCalendar];

 

 

2:You can get the calendar for the user's preferred locale (or in general from any NSLocale object) using the key NSLocaleCalendar,

 

NSCalendar *usersCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:
        [[NSLocale currentLocale] objectForKey:NSLocaleCalendar]];

 

 

3:or most easily using the NSCalendar method currentCalendar. 

 

 

NSCalendar *currentCalendar = [NSCalendar currentCalendar];

 

 


 
Calendrical Calculations

 

取得时间差

 

NSDate *startDate = ...;
NSDate *endDate = ...;
 
NSCalendar *gregorian = [[NSCalendar alloc]
        initWithCalendarIdentifier:NSGregorianCalendar];
 
unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
 
NSDateComponents *components = [gregorian components:unitFlags
                                          fromDate:startDate
                                          toDate:endDate options:0];
int months = [components month];
int days = [components day];

 

 

api:

 

 

1:从NSDate 中取得NSDateComponents 对象

 

Returns a NSDateComponents object containing a given date decomposed into specified components.

- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date

 

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *comps = [gregorian components:unitFlags fromDate:date];

 

 

2:取得时间差

Returns, as an NSDateComponents object using specified components, the difference between two supplied dates.

- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts

 

NSDate *startDate = ...;
NSDate *endDate = ...;
unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *comps = [gregorian components:unitFlags fromDate:startDate  toDate:endDate  options:0];
int months = [comps month];
int days = [comps day];

 

3:在给定的NSDate 上增加几天,几年等。。。。

 

Returns a new NSDate object representing the absolute time calculated by adding given components to a given date.

- (NSDate *)dateByAddingComponents:(NSDateComponents *)comps toDate:(NSDate *)date options:(NSUInteger)opts

 

NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setMonth:2];
[comps setDay:3];
NSDate *date = [gregorian dateByAddingComponents:comps toDate:currentDate  options:0];
[comps release];

 

4:取得一个指定的时间

Returns a new NSDate object representing the absolute time calculated from given components.

- (NSDate *)dateFromComponents:(NSDateComponents *)comps

 

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:1965];
[comps setMonth:1];
[comps setDay:6];
[comps setHour:14];
[comps setMinute:10];
[comps setSecond:0];
NSDate *date = [gregorian dateFromComponents:comps];
[comps release];

 

 


 Calendar Units
Specify calendrical units such as day and month.

 

enum {
   NSEraCalendarUnit = kCFCalendarUnitEra,
   NSYearCalendarUnit = kCFCalendarUnitYear,
   NSMonthCalendarUnit = kCFCalendarUnitMonth,
   NSDayCalendarUnit = kCFCalendarUnitDay,
   NSHourCalendarUnit = kCFCalendarUnitHour,
   NSMinuteCalendarUnit = kCFCalendarUnitMinute,
   NSSecondCalendarUnit = kCFCalendarUnitSecond,
   NSWeekCalendarUnit = kCFCalendarUnitWeek,
   NSWeekdayCalendarUnit = kCFCalendarUnitWeekday,
   NSWeekdayOrdinalCalendarUnit = kCFCalendarUnitWeekdayOrdinal
};

分享到:
评论

相关推荐

    Python库 | pandas_market_calendars-0.8-py2.py3-none-any.whl

    `pandas_market_calendars` 是一个专门用于处理金融市场交易日历的 Python 库,它建立在广泛使用的 `pandas` 库之上,为金融数据分析师和量化交易者提供了方便的工具来处理各种市场的时间表。这个库的主要目标是提供...

    PyPI 官网下载 | trading_calendars-1.11.11.tar.gz

    总的来说,`trading_calendars` 是一个专注于金融市场时间管理的Python库,它简化了处理交易日历和交易时间的复杂性,是金融领域开发者的重要工具。通过使用这个库,你可以更准确、高效地处理与金融市场时间相关的...

    matlab开发-往返日期和时间

    在MATLAB中,日期和时间处理是编程过程中常见的任务,特别是在数据分析、模拟和科学计算等领域。本主题将深入探讨如何在MATLAB中进行日期和时间的转换与操作,特别是关于"往返日期和时间"的开发。 首先,让我们了解...

    项目管理知识体系指南(PMBOK英文第六版)课件第六章项目进度管理第二部分

    项目进度管理是项目管理中一个非常重要的方面,它涉及到项目的时间、成本、资源和风险等多个方面的管理。下面是项目进度管理中的一些重要知识点: 1. 估算活动时长:估算活动时长是项目进度管理中一个非常重要的...

    Android应用源码之Android系统日历日程操作-IT计算机-毕业设计.zip

    在Android应用开发中,日历和日程管理是常见的功能之一,尤其对于毕业设计或论文项目来说,理解和实现这一功能显得尤为重要。本项目名为“Android应用源码之Android系统日历日程操作”,旨在帮助开发者深入理解如何...

    chrono:Nim的Chrono a Timestamps,Calendars和Timezones库

    日历只能用于时间计算,例如下个月,上周,从现在起60天……它的显示/计算对象应该是短暂的。 规范化日历是使用日历的一种简便方法。 可以在日历中添加随机的天,年,月。 拥有60天的日历是可以的……完成后只需对...

    IOS应用源码之日历组件 .rar

    - iOS中,`NSDate`对象表示特定的日期和时间,`NSCalendar`用于处理日期和时间的转换,以及比较和计算。 - `NSDateComponents`用于存储日期和时间的各个部分,如年、月、日、小时等。 5. **事件的添加与删除**: ...

    IOS应用源码——一个功能比较完整,类似于android上面的日历demo,可记录事件.rar

    `Calendar`可以用来进行日期的计算和格式化,例如计算两个日期之间的差距或者将日期转换为用户友好的字符串。 9. **通知与提醒**:如果应用需要在特定时间提醒用户,可以使用UserNotifications框架。创建一个...

    IOS日历控件

    let calendars = eventStore.calendars(for: .event) let customCalendar = EKCalendar(for: .event, eventStore: eventStore) ``` ### 4. `EKEvent` `EKEvent`是日历中的一个事件,包含开始时间、结束时间、标题...

    时间:为Swift构建更好的日期时间库

    1. **Date**: 表示一个绝对时间点,通常以自1970年1月1日(UTC)以来的秒数来计算。 2. **Calendar**: 定义了日期和时间的表示方式,如公历、伊斯兰历等,以及如何进行日期的转换和计算。 3. **TimeZone**: 表示全球...

    trade_time

    使用这个库,你可以写代码来判断一个给定的时间是否在交易时间内,或者计算两个日期之间的交易日数。 ```python from pandas_market_calendars import get_calendar # 获取纽约证券交易所的日历 nyse = get_...

    oracle_EBS_表结构ebs[定义].pdf

    5. **bom.bom_calendars**:定义了与BOM相关的日历,如工作日、节假日等,用于计算生产计划和预测。 6. **bom.bom_calendar_dates**:存储特定日期的日历信息,如是否为工作日、节假日等。 7. **bom.bom_calendar_...

    android 日历、日程记录

    例如,通过`content://calendar/calendars`和`content://calendar/events`这两个URI,我们可以获取日历列表和事件列表。 二、添加、更新和删除日程 1. 添加日程:使用ContentResolver的insert()方法,配合 ...

    android日历源码

    `Uri`对象用于指定操作的数据表,例如`CalendarContract.Calendars.CONTENT_URI`用于获取所有日历信息。 2. **日历视图实现** 日历源码中通常包含一个自定义的`View`或`Adapter`,用于展示日历的月份视图。这个...

    C#的农历 的源代码

    阳历,即公历,是国际通用的日历系统,以地球绕太阳公转一周的时间为基础。而农历则是根据月亮的阴晴圆缺制定的,因此农历月份通常比阳历短,且农历年与阳历年之间存在一定的差距。在中国,农历在日常生活中的应用...

    重复使用日历:该程序确定在给定年份,您何时可以再次使用相同的日历。-matlab开发

    这个程序的核心概念是理解和处理日期与时间的数据类型,并进行特定的数学计算。 在MATLAB中,日期和时间通常用`datetime`对象表示,该对象包含了年、月、日、时、分、秒等信息。在我们的日历重复使用问题中,我们...

    安卓Android源码——简易日历中心.zip

    日历应用还可能包含了日期和时间的处理,比如使用`java.util.Calendar`类进行日期计算,或者使用`java.text.SimpleDateFormat`进行日期格式化。对于日历视图的展示,可能会使用到Android的`CalendarView`组件,或者...

    Android 日历

    在日历Demo中,可能会涉及日期和时间的计算,例如计算两个日期之间的天数、找出某个月份的天数等。这些算法通常基于`java.util.Calendar`类或者`java.time`包中的类(对于Android API 26+)。例如,可以使用`...

    calendrica-js:日历计算的Javascript实现

    第十四节:时间与天文学 第18.3节:伊斯兰观察日历¹ 第20节:现代印度历法¹ 文件general.js包括本书中给出的数学计算所需的函数,摘自第1节:日历基础。 ¹对于这些功能,使用的参考位置是旁遮普邦的阿姆利则。...

    pycalcal:Python中的日历计算

    计算特殊日期/时间,例如假期、天文事件(春分、至日...)、日出/日落 试用(实验性!! ) PyCalCal是CALENDRICA 3.0 的Python 实现,是描述的函数的 Common Lisp 实现 Nachum Dershowitz, Edward M. Reingold ...

Global site tag (gtag.js) - Google Analytics