116 lines
3.2 KiB
Objective-C
116 lines
3.2 KiB
Objective-C
/* Copyright (c) 2011 Google Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "GTLRDefines.h"
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/**
|
|
* An immutable class representing a date and optionally a time in UTC.
|
|
*/
|
|
@interface GTLRDateTime : NSObject <NSCopying>
|
|
|
|
/**
|
|
* Constructor from a string representation.
|
|
*/
|
|
+ (nullable instancetype)dateTimeWithRFC3339String:(nullable NSString *)str;
|
|
|
|
/**
|
|
* Constructor from a date and time representation.
|
|
*/
|
|
+ (instancetype)dateTimeWithDate:(NSDate *)date;
|
|
|
|
/**
|
|
* Constructor from a date and time representation, along with an offset
|
|
* minutes value used when creating a RFC3339 string representation.
|
|
*
|
|
* The date value is independent of time zone; the offset affects how the
|
|
* date will be rendered as a string.
|
|
*
|
|
* The offsetMinutes may be initialized from a NSTimeZone as
|
|
* (timeZone.secondsFromGMT / 60)
|
|
*/
|
|
+ (instancetype)dateTimeWithDate:(NSDate *)date
|
|
offsetMinutes:(NSInteger)offsetMinutes;
|
|
|
|
/**
|
|
* Constructor from a date for an all-day event.
|
|
*
|
|
* Use this constructor to create a @c GTLRDateTime that is "date only".
|
|
*
|
|
* @note @c hasTime will be set to NO.
|
|
*/
|
|
+ (instancetype)dateTimeForAllDayWithDate:(NSDate *)date;
|
|
|
|
/**
|
|
* Constructor from date components.
|
|
*/
|
|
+ (instancetype)dateTimeWithDateComponents:(NSDateComponents *)date;
|
|
|
|
/**
|
|
* The represented date and time.
|
|
*
|
|
* If @c hasTime is NO, the time is set to noon GMT so the date is valid for all time zones.
|
|
*/
|
|
@property(nonatomic, readonly) NSDate *date;
|
|
|
|
/**
|
|
* The date and time as a RFC3339 string representation.
|
|
*/
|
|
@property(nonatomic, readonly) NSString *RFC3339String;
|
|
|
|
/**
|
|
* The date and time as a RFC3339 string representation.
|
|
*
|
|
* This returns the same string as @c RFC3339String.
|
|
*/
|
|
@property(nonatomic, readonly) NSString *stringValue;
|
|
|
|
/**
|
|
* The represented date and time as date components.
|
|
*/
|
|
@property(nonatomic, readonly, copy) NSDateComponents *dateComponents;
|
|
|
|
/**
|
|
* The fraction of seconds represented, 0-999.
|
|
*/
|
|
@property(nonatomic, readonly) NSInteger milliseconds;
|
|
|
|
/**
|
|
* The time offset displayed in the string representation, if any.
|
|
*
|
|
* If the offset is not nil, the date and time will be rendered as a string
|
|
* for the time zone indicated by the offset.
|
|
*
|
|
* An app may create a NSTimeZone for this with
|
|
* [NSTimeZone timeZoneForSecondsFromGMT:(offsetMinutes.integerValue * 60)]
|
|
*/
|
|
@property(nonatomic, readonly, nullable) NSNumber *offsetMinutes;
|
|
|
|
/**
|
|
* Flag indicating if the object represents date only, or date with time.
|
|
*/
|
|
@property(nonatomic, readonly) BOOL hasTime;
|
|
|
|
/**
|
|
* The calendar used by this class, Gregorian and UTC.
|
|
*/
|
|
+ (NSCalendar *)calendar;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|