@@ -282,16 +282,17 @@ struct CoTMessage: Identifiable, Sendable {
282282 // MARK: - XML Generation
283283
284284 /// Generate CoT XML string for transmission to TAK clients
285+ private static let xmlDateFormatStyle = Date . ISO8601FormatStyle ( includingFractionalSeconds: true , timeZone: TimeZone ( secondsFromGMT: 0 ) !)
286+
285287 func toXML( ) -> String {
286- let dateFormatter = ISO8601DateFormatter ( )
287- dateFormatter. formatOptions = [ . withInternetDateTime, . withFractionalSeconds]
288+ let dateFormatter = Self . xmlDateFormatStyle
288289
289290 var cot = " <?xml version='1.0' encoding='UTF-8' standalone='yes'?> "
290291 cot += " <event version='2.0' uid=' \( uid. xmlEscaped) ' "
291292 cot += " type=' \( type) ' "
292- cot += " time=' \( dateFormatter . string ( from : time ) ) ' "
293- cot += " start=' \( dateFormatter . string ( from : start ) ) ' "
294- cot += " stale=' \( dateFormatter . string ( from : stale ) ) ' "
293+ cot += " time=' \( time . formatted ( dateFormatter ) ) ' "
294+ cot += " start=' \( start . formatted ( dateFormatter ) ) ' "
295+ cot += " stale=' \( stale . formatted ( dateFormatter ) ) ' "
295296 cot += " how=' \( how) '> "
296297 cot += " <point lat=' \( latitude) ' lon=' \( longitude) ' "
297298 cot += " hae=' \( hae) ' ce=' \( ce) ' le=' \( le) '/> "
@@ -352,7 +353,7 @@ struct CoTMessage: Identifiable, Sendable {
352353 cot += " <__serverdestination destinations='0.0.0.0:4242:tcp: \( senderUid. xmlEscaped) '/> "
353354 cot += " <remarks source='BAO.F.ATAK. \( senderUid. xmlEscaped) ' "
354355 cot += " to=' \( chat. chatroom. xmlEscaped) ' "
355- cot += " time=' \( dateFormatter . string ( from : time ) ) '> "
356+ cot += " time=' \( time . formatted ( dateFormatter ) ) '> "
356357 cot += " \( chat. message. xmlEscaped) </remarks> "
357358 } else if let remarks, !remarks. isEmpty {
358359 cot += " <remarks> \( remarks. xmlEscaped) </remarks> "
0 commit comments