feat(config): add configurable date format
- Add dateFormat property to Config with ISO 8601 default - Use config.dateFormat for both sample text and live clock - Improve sample date generation to test edge case (UTC-12 timezone)
This commit is contained in:
@@ -12,6 +12,7 @@ struct Config: Codable {
|
|||||||
var position: Position = .top_right
|
var position: Position = .top_right
|
||||||
var offsetX: Double = 0.0
|
var offsetX: Double = 0.0
|
||||||
var offsetY: Double = 0.0
|
var offsetY: Double = 0.0
|
||||||
|
var dateFormat: String = "yyyy-MM-dd'T'HH:mm:ssXXXXX"
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadConfig() -> Config {
|
func loadConfig() -> Config {
|
||||||
@@ -65,7 +66,21 @@ label.alignment = .center
|
|||||||
label.translatesAutoresizingMaskIntoConstraints = false
|
label.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
|
||||||
// Sample Dimensions
|
// Sample Dimensions
|
||||||
let sampleText = "2026-04-15T23:59:59+00:00"
|
let sampleFormatter = DateFormatter()
|
||||||
|
sampleFormatter.dateFormat = config.dateFormat
|
||||||
|
sampleFormatter.locale = Locale(identifier: "en_US_POSIX")
|
||||||
|
let sampleDate = {
|
||||||
|
var components = DateComponents()
|
||||||
|
components.year = 2026
|
||||||
|
components.month = 12
|
||||||
|
components.day = 30
|
||||||
|
components.hour = 23
|
||||||
|
components.minute = 59
|
||||||
|
components.second = 59
|
||||||
|
components.timeZone = TimeZone(secondsFromGMT: -12 * 3600) // Widest offset
|
||||||
|
return Calendar.current.date(from: components) ?? Date()
|
||||||
|
}()
|
||||||
|
let sampleText = sampleFormatter.string(from: sampleDate)
|
||||||
let textSize = (sampleText as NSString).size(withAttributes: [.font: font])
|
let textSize = (sampleText as NSString).size(withAttributes: [.font: font])
|
||||||
let windowSize = NSSize(
|
let windowSize = NSSize(
|
||||||
width: ceil(textSize.width + config.horizontalPadding * 2),
|
width: ceil(textSize.width + config.horizontalPadding * 2),
|
||||||
@@ -135,7 +150,7 @@ window.contentView = vfx
|
|||||||
window.orderFrontRegardless()
|
window.orderFrontRegardless()
|
||||||
|
|
||||||
let formatter = DateFormatter()
|
let formatter = DateFormatter()
|
||||||
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssXXXXX"
|
formatter.dateFormat = config.dateFormat
|
||||||
formatter.locale = Locale(identifier: "en_US_POSIX")
|
formatter.locale = Locale(identifier: "en_US_POSIX")
|
||||||
|
|
||||||
func updateClock() {
|
func updateClock() {
|
||||||
|
|||||||
Reference in New Issue
Block a user