https://github.com/aguilarpgc/timelapse
Simple Date & Int extension with time lapse description format
https://github.com/aguilarpgc/timelapse
date formatting swift swift-package-manager time
Last synced: over 1 year ago
JSON representation
Simple Date & Int extension with time lapse description format
- Host: GitHub
- URL: https://github.com/aguilarpgc/timelapse
- Owner: aguilarpgc
- License: mit
- Created: 2018-09-25T20:46:39.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2021-06-30T16:32:10.000Z (about 5 years ago)
- Last Synced: 2025-03-01T16:17:49.868Z (over 1 year ago)
- Topics: date, formatting, swift, swift-package-manager, time
- Language: Swift
- Homepage:
- Size: 22.2 MB
- Stars: 5
- Watchers: 3
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TimeLapse
[](https://github.com/aguilarpgc/TimeLapse/releases)
[](https://developer.apple.com/swift/)
[](https://developer.apple.com/swift/)
[](https://tldrlegal.com/license/mit-license)
`Date` extension that compares another `Date` with current time, converts it in seconds and returns a formatted time lapse description.
## Installation
### Swift Package Manager
```
dependencies: [
.package(url: "https://github.com/aguilarpgc/TimeLapse.git", from: "0.5.0")
]
```
## Example

## Usage
### Default
``` Swift
import Foundation
import TimeLapse
let currentDate = Date()
let fakePastDate = Calendar.current.date(byAdding: .second, value: -600, to: currentDate)! // 10 minutes ago
let timeLapse = fakePastDate.elapsedTime(until: currentDate)
print(timeLapse) // 10min
```
#### Date
``` Swift
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm:ss"
let fakeCurrentDate = dateFormatter.date(from: "24/12/2018 23:59:59")!
// some test dates
let date0 = dateFormatter.date(from: "24/12/2018 23:59:58")!
let date1 = dateFormatter.date(from: "24/12/2018 23:59:09")!
let date2 = dateFormatter.date(from: "24/12/2018 23:52:59")!
let date3 = dateFormatter.date(from: "24/12/2018 18:59:59")!
let date4 = dateFormatter.date(from: "23/12/2018 23:59:59")!
let date5 = dateFormatter.date(from: "09/12/2018 23:59:59")!
let date6 = dateFormatter.date(from: "24/11/2018 23:59:59")!
let date7 = dateFormatter.date(from: "24/12/2016 23:59:59")!
date0.elapsedTime(until: fakeCurrentDate)
date1.elapsedTime(until: fakeCurrentDate)
date2.elapsedTime(until: fakeCurrentDate)
date3.elapsedTime(until: fakeCurrentDate)
date4.elapsedTime(until: fakeCurrentDate)
date5.elapsedTime(until: fakeCurrentDate)
date6.elapsedTime(until: fakeCurrentDate)
date7.elapsedTime(until: fakeCurrentDate)
```
* Just Now : **just now**
* Seconds : **50s**
* Minutes : **7min**
* Hours : **5h**
* Days : **1d**
* Weeks : **2w**
* Months : **1mo**
* Years : **2y**
#### Int (Seconds)
``` Swift
2.shortTimeLapse()
10.shortTimeLapse()
1800.shortTimeLapse()
43200.shortTimeLapse()
172_800.shortTimeLapse()
604_800.shortTimeLapse()
15_552_000.shortTimeLapse()
31_536_000.shortTimeLapse()
```
* Just Now : **just now**
* Seconds : **10s**
* Minutes : **30min**
* Hours : **12h**
* Days : **2d**
* Weeks : **1w**
* Months : **6mo**
* Years : **1y**
### Customize Format
Conforms to the protocol `TimeLapseFormat` and assign custom format to `TimeLapse.format`
#### Example
``` Swift
struct CustomTimeLapseFormat: TimeLapseFormat {
var now : String = "now"
var second : String = "sec"
var minute : String = "m"
var hour : String = "hour"
var day : String = "d"
var week : String = "w"
var month : String = "mon"
var year : String = "y"
}
```
##### Assign for usage:
``` Swift
TimeLapse.format = CustomTimeLapseFormat()
```
##### Result:
``` Swift
0.shortTimeLapse()
10.shortTimeLapse()
1800.shortTimeLapse()
7200.shortTimeLapse()
604_799.shortTimeLapse()
2_591_999.shortTimeLapse()
31_535_999.shortTimeLapse()
630_720_000.shortTimeLapse()
```
* Just Now : **now**
* Seconds : **10sec**
* Minutes : **30m**
* Hours : **2hour**
* Days : **6d**
* Weeks : **4w**
* Months : **12mon**
* Years : **20y**
##### Restore to default format
``` Swift
TimeLapse.enableDefaultFormat()
```
# License
This program is free software; you can redistribute it and/or modify it under the terms of the MIT License.