NSDate+CL.m 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. //
  2. // NSDate+CL.m
  3. // CLWeeklyCalendarView
  4. //
  5. #import "NSDate+CL.h"
  6. @implementation NSDate (CL)
  7. -(NSDate *)getWeekStartDate: (NSInteger)weekStartIndex
  8. {
  9. int weekDay = [[self getWeekDay] intValue];
  10. NSInteger gap = (weekStartIndex <= weekDay) ? weekDay : ( 7 + weekDay );
  11. NSInteger day = weekStartIndex - gap;
  12. return [self addDays:day];
  13. }
  14. -(NSNumber *)getWeekDay
  15. {
  16. NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
  17. NSDateComponents *comps = [gregorian components:NSCalendarUnitWeekday fromDate:self];
  18. return [NSNumber numberWithInteger:([comps weekday] - 1)];
  19. }
  20. -(NSDate *)addDays:(NSInteger)day
  21. {
  22. NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
  23. dayComponent.day = day;
  24. NSCalendar *theCalendar = [NSCalendar currentCalendar];
  25. return [theCalendar dateByAddingComponents:dayComponent toDate:self options:0];
  26. }
  27. -(NSString *)getDayOfWeekShortString
  28. {
  29. static NSDateFormatter *shortDayOfWeekFormatter;
  30. if(!shortDayOfWeekFormatter){
  31. shortDayOfWeekFormatter = [[NSDateFormatter alloc] init];
  32. //danson 显示星期几的文字类型
  33. NSLocale* zh_CN = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
  34. [shortDayOfWeekFormatter setLocale:zh_CN];
  35. [shortDayOfWeekFormatter setDateFormat:@"E"];
  36. }
  37. return [shortDayOfWeekFormatter stringFromDate:self];
  38. }
  39. -(NSString *)getDateOfMonth
  40. {
  41. static NSDateFormatter *dateFormaater;
  42. if(!dateFormaater){
  43. dateFormaater = [[NSDateFormatter alloc] init];
  44. NSLocale* en_AU_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_AU_POSIX"];
  45. [dateFormaater setLocale:en_AU_POSIX];
  46. [dateFormaater setDateFormat:@"d"];
  47. }
  48. return [dateFormaater stringFromDate:self];
  49. }
  50. - (NSDate*)midnightDate {
  51. return [[NSCalendar currentCalendar] dateFromComponents:[[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:self]];
  52. }
  53. -(BOOL) isSameDateWith: (NSDate *)dt{
  54. return ([[self midnightDate] isEqualToDate: [dt midnightDate]])?YES:NO;
  55. }
  56. - (BOOL)isDateToday {
  57. return [[[NSDate date] midnightDate] isEqual:[self midnightDate]];
  58. }
  59. - (BOOL)isWithinDate: (NSDate *)earlierDate toDate:(NSDate *)laterDate
  60. {
  61. NSTimeInterval timestamp = [[self midnightDate] timeIntervalSince1970];
  62. NSDate *fdt = [earlierDate midnightDate];
  63. NSDate *tdt = [laterDate midnightDate];
  64. BOOL isWithinDate = (timestamp >= [fdt timeIntervalSince1970] && timestamp <= [tdt timeIntervalSince1970]);
  65. return isWithinDate;
  66. }
  67. - (BOOL)isPastDate {
  68. NSDate* now = [NSDate date];
  69. if([[now earlierDate:self] isEqualToDate:self]) {
  70. return YES;
  71. } else {
  72. return NO;
  73. }
  74. }
  75. @end
  76. // 版权属于原作者
  77. // http://code4app.com (cn) http://code4app.net (en)
  78. // 发布代码于最专业的源码分享网站: Code4App.com