mirror of
https://github.com/otaviocc/Triton.git
synced 2026-01-30 04:04:27 +00:00
Use user’s timezone for blog post time
This commit is contained in:
parent
e1098916ab
commit
017ff459a5
3 changed files with 40 additions and 19 deletions
|
|
@ -6,17 +6,19 @@ public extension DateFormatter {
|
|||
///
|
||||
/// This formatter produces ISO 8601 compatible date strings with short time
|
||||
/// format, specifically designed for use in weblog entry frontmatter. The
|
||||
/// formatter uses GMT+0 timezone and POSIX locale for consistent formatting
|
||||
/// formatter uses the user timezone and POSIX locale for consistent formatting
|
||||
/// across different system configurations.
|
||||
///
|
||||
/// Output format: `YYYY-MM-DD HH:MM`
|
||||
///
|
||||
/// Example: `2024-03-15 14:30`
|
||||
static let iso8601WithShortTime: DateFormatter = {
|
||||
static func iso8601WithShortTime(
|
||||
timeZone: TimeZone
|
||||
) -> DateFormatter {
|
||||
let formatter = DateFormatter()
|
||||
formatter.dateFormat = "yyyy-MM-dd HH:mm"
|
||||
formatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
formatter.timeZone = TimeZone(secondsFromGMT: 0)
|
||||
formatter.timeZone = timeZone
|
||||
return formatter
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,16 +21,21 @@ public extension String {
|
|||
///
|
||||
/// - Parameters:
|
||||
/// - date: The publication date to include in the frontmatter
|
||||
/// - timeZone: The timezone used for the publication (defaults to user's current timezone)
|
||||
/// - status: The publication status to include in the frontmatter (e.g., "Draft", "Live", "Feed Only", "Web
|
||||
/// Only", "Unlisted")
|
||||
/// - tags: An array of tags to include in the frontmatter. Tags are comma-separated.
|
||||
/// - Returns: UTF-8 encoded data containing the formatted weblog entry body
|
||||
func weblogEntryBody(
|
||||
date: Date,
|
||||
timeZone: TimeZone = .current,
|
||||
status: String,
|
||||
tags: [String]
|
||||
) -> Data {
|
||||
let formattedString = DateFormatter.iso8601WithShortTime.string(from: date)
|
||||
let formattedString = DateFormatter
|
||||
.iso8601WithShortTime(timeZone: timeZone)
|
||||
.string(from: date)
|
||||
|
||||
var frontmatter = """
|
||||
---
|
||||
Date: \(formattedString)
|
||||
|
|
|
|||
|
|
@ -22,8 +22,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -57,8 +58,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -91,8 +93,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -125,8 +128,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -159,8 +163,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -194,8 +199,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -229,8 +235,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -265,8 +272,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -291,8 +299,9 @@ struct StringWeblogTests {
|
|||
let tags: [String] = []
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -325,8 +334,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -360,8 +370,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -394,8 +405,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -429,8 +441,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
@ -465,8 +478,9 @@ struct StringWeblogTests {
|
|||
"""
|
||||
|
||||
// When
|
||||
let result = content.weblogEntryBody(
|
||||
let result = try content.weblogEntryBody(
|
||||
date: date,
|
||||
timeZone: #require(TimeZone(secondsFromGMT: 0)),
|
||||
status: status,
|
||||
tags: tags
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue