C# 对接微信支付时生成符合 RFC3339 标准的日期时间字符串
生活随笔
收集整理的這篇文章主要介紹了
C# 对接微信支付时生成符合 RFC3339 标准的日期时间字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
rfc3339 是一種包含時區信息的字符串標準格式。格式為YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出現在字符串中,表示time元素的開頭,HH:mm:ss表示時分秒,TIMEZONE表示時區(+08:00表示東八區時間,領先UTC 8小時,即北京時間)。
例如:2015-05-20T13:29:35+08:00 表示,北京時間2015年5月20日 13點29分35秒。
要在 C# 中獲取一個符合 RFC3339 標準的字符串,可以使用以下代碼:
var str = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssK"); Console.WriteLine(str);默認情況下,Newtonsoft.Json 序列化出的 JSON 字符串是不符合 RFC3339 標準的。以下代碼演示了如何解決這個問題:
public class Rfc3339DateTimeConverter : IsoDateTimeConverter {public Rfc3339DateTimeConverter(){this.DateTimeFormat = "yyyy-MM-ddTHH:mm:ssK";} } public class Model1 {[Newtonsoft.Json.JsonProperty(ItemConverterType = typeof(Rfc3339DateTimeConverter))]public DateTime CreatedTime { get; set; } }調用:
var test = new Model1 {CreatedTime = DateTime.Parse("2015-05-20T13:29:35+08:00") }; var json = JsonConvert.SerializeObject(test); Console.WriteLine(json);輸出:
{"CreatedTime":"2015-05-20T13:29:35+08:00"}如果系統中獲取到的時間不包含時區信息(比如從數據庫或字符串轉換),那么以上代碼會省略掉對時區的輸出:
var dt = DateTime.Parse("2015-05-20 13:29:35"); Console.WriteLine(dt.ToString("yyyy-MM-ddTHH:mm:ssK"));輸出:
2015-05-20T13:29:35要解決該問題,可以直接將時區信息寫在格式中:
var dt = DateTime.Parse("2015-05-20 13:29:35"); Console.WriteLine(dt.ToString("yyyy-MM-ddTHH:mm:ss+08:00"));總結
以上是生活随笔為你收集整理的C# 对接微信支付时生成符合 RFC3339 标准的日期时间字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用 PGO 提升 .NET 程序性能
- 下一篇: [006] 了解 Roslyn 编译器