Skip to content

Commit 7f02a71

Browse files
committed
Fix compilation on non iOS targets
1 parent 3fc9b82 commit 7f02a71

3 files changed

Lines changed: 55 additions & 64 deletions

File tree

NaiveDateTime.xcodeproj/project.pbxproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
0CAA5D331DB14912001F6D96 /* NaiveDateTimeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CAA5D1F1DB14780001F6D96 /* NaiveDateTimeTests.swift */; };
1818
0CAA5D3E1DB1495E001F6D96 /* NaiveDateTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C5108211D4E81CE00F1F405 /* NaiveDateTime.framework */; };
1919
0CAA5D441DB1496B001F6D96 /* NaiveDateTimeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CAA5D1F1DB14780001F6D96 /* NaiveDateTimeTests.swift */; };
20-
0CE6A8AF1FD1DB9700627ED1 /* Calendar+NaiveDateTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CE6A8AE1FD1DB9700627ED1 /* Calendar+NaiveDateTime.swift */; };
2120
0CE6A8B61FD1E00900627ED1 /* NaiveDateTimeFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CE6A8B51FD1E00900627ED1 /* NaiveDateTimeFormatter.swift */; };
2221
0CE6A8B71FD1E00900627ED1 /* NaiveDateTimeFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CE6A8B51FD1E00900627ED1 /* NaiveDateTimeFormatter.swift */; };
2322
0CE6A8B81FD1E00900627ED1 /* NaiveDateTimeFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CE6A8B51FD1E00900627ED1 /* NaiveDateTimeFormatter.swift */; };
@@ -69,7 +68,6 @@
6968
0CAA5D391DB1495E001F6D96 /* NaiveDateTime macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "NaiveDateTime macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
7069
0CAA5D461DB149FF001F6D96 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .travis.yml; sourceTree = "<group>"; };
7170
0CE052001D4E830700A12B45 /* NaiveDateTime.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NaiveDateTime.framework; sourceTree = BUILT_PRODUCTS_DIR; };
72-
0CE6A8AE1FD1DB9700627ED1 /* Calendar+NaiveDateTime.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Calendar+NaiveDateTime.swift"; sourceTree = "<group>"; };
7371
0CE6A8B51FD1E00900627ED1 /* NaiveDateTimeFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NaiveDateTimeFormatter.swift; sourceTree = "<group>"; };
7472
0CE6A8BA1FD1E69400627ED1 /* NaiveDateTimeFormatterTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NaiveDateTimeFormatterTest.swift; sourceTree = "<group>"; };
7573
/* End PBXFileReference section */
@@ -160,7 +158,6 @@
160158
isa = PBXGroup;
161159
children = (
162160
0C20715A1D4E83A700EA5BEF /* NaiveDateTime.swift */,
163-
0CE6A8AE1FD1DB9700627ED1 /* Calendar+NaiveDateTime.swift */,
164161
0CE6A8B51FD1E00900627ED1 /* NaiveDateTimeFormatter.swift */,
165162
);
166163
path = Sources;
@@ -499,7 +496,6 @@
499496
buildActionMask = 2147483647;
500497
files = (
501498
0CE6A8B61FD1E00900627ED1 /* NaiveDateTimeFormatter.swift in Sources */,
502-
0CE6A8AF1FD1DB9700627ED1 /* Calendar+NaiveDateTime.swift in Sources */,
503499
0C20715B1D4E83A700EA5BEF /* NaiveDateTime.swift in Sources */,
504500
);
505501
runOnlyForDeploymentPostprocessing = 0;

Sources/Calendar+NaiveDateTime.swift

Lines changed: 0 additions & 60 deletions
This file was deleted.

Sources/NaiveDateTime.swift

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,61 @@ public struct NaiveDateTime: Equatable, Hashable, Comparable, LosslessStringConv
214214
}
215215

216216

217+
// MARK: - Calendar Extensions -
218+
219+
public extension Calendar {
220+
// MARK: Naive* -> Date
221+
222+
/// Returns a date created from the specified naive date in a given time zone.
223+
/// - parameter timeZone: `nil` by default (uses Calendar time zone).
224+
public func date(from date: NaiveDate, in timeZone: TimeZone? = nil) -> Date? {
225+
return _date(from: date, in: timeZone)
226+
}
227+
228+
/// Returns a date created from the specified naive time in a given time zone.
229+
/// - parameter timeZone: `nil` by default (uses Calendar time zone).
230+
public func date(from time: NaiveTime, in timeZone: TimeZone? = nil) -> Date? {
231+
return _date(from: time, in: timeZone)
232+
}
233+
234+
/// Returns a date created from the specified naive datetime in a given time zone.
235+
/// - parameter timeZone: `nil` by default (uses Calendar time zone).
236+
public func date(from dateTime: NaiveDateTime, in timeZone: TimeZone? = nil) -> Date? {
237+
return _date(from: dateTime, in: timeZone)
238+
}
239+
240+
internal func _date<T: _DateComponentsConvertible>(from value: T, in timeZone: TimeZone? = nil) -> Date? {
241+
return self.date(from: value.dateComponents(timeZone: timeZone))
242+
}
243+
244+
// MARK: Date -> Naive*
245+
246+
/// Returns naive date from a date, as if in a given time zone.
247+
/// - parameter timeZone: `nil` by default (uses Calendar time zone).
248+
public func naiveDate(from date: Date, in timeZone: TimeZone? = nil) -> NaiveDate {
249+
let components = self.dateComponents(in: timeZone ?? self.timeZone, from: date)
250+
return NaiveDate(year: components.year!, month: components.month!, day: components.day!)
251+
}
252+
253+
/// Returns naive time from a date, as if in a given time zone.
254+
/// - parameter timeZone: `nil` by default (uses Calendar time zone).
255+
public func naiveTime(from date: Date, in timeZone: TimeZone? = nil) -> NaiveTime {
256+
let components = self.dateComponents(in: timeZone ?? self.timeZone, from: date)
257+
return NaiveTime(hour: components.hour!, minute: components.minute!, second: components.second!)
258+
}
259+
260+
/// Returns naive time from a date, as if in a given time zone.
261+
/// - parameter timeZone: `nil` by default (uses Calendar time zone).
262+
public func naiveDateTime(from date: Date, in timeZone: TimeZone? = nil) -> NaiveDateTime {
263+
let components = self.dateComponents(in: timeZone ?? self.timeZone, from: date)
264+
return NaiveDateTime(
265+
date: NaiveDate(year: components.year!, month: components.month!, day: components.day!),
266+
time: NaiveTime(hour: components.hour!, minute: components.minute!, second: components.second!)
267+
)
268+
}
269+
}
270+
271+
217272
// MARK: - Private -
218273

219274
/// A type that can be converted to DateComponents (and in turn to Date).

0 commit comments

Comments
 (0)