我在日期時間字符串中的日期時間爲「20160127003500」。 我需要做的是將其轉換爲Unix時間戳添加小時。轉換爲紀元時間戳添加小時數偏移量
我想添加小時偏移量爲「1」或「2」或「24」。
任何人都可以請指導我在正確的方向。
問候
我在日期時間字符串中的日期時間爲「20160127003500」。 我需要做的是將其轉換爲Unix時間戳添加小時。轉換爲紀元時間戳添加小時數偏移量
我想添加小時偏移量爲「1」或「2」或「24」。
任何人都可以請指導我在正確的方向。
問候
首先,解析整個字符串(包括抵消你的問題的評論中提到)到DateTimeOffset
:
using System.Globalization;
string s = "20160129205500 +0100";
string format = "yyyyMMddHHmmss zzz";
DateTimeOffset dto = DateTimeOffset.ParseExact(s, format, CultureInfo.InvariantCulture);
然後,有幾種不同的方式得到一個Unix時間戳。請注意,通過「Unix時間戳」的純粹定義,結果將以秒爲條件,儘管現在很多語言使用更高的精度(例如在JavaScript中使用的毫秒)。
如果你的目標.NET 4.6或更高版本,只需使用內置的方法:
// pick one for the desired precision:
long timestamp = dto.ToUnixTimeMilliseconds();
long timestamp = dto.ToUnixTimeSeconds();
如果你的目標.NET的早期版本,那麼你自己計算吧:
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
// pick one for the desired precision:
long timestamp = (long) dto.UtcDateTime.Subtract(epoch).TotalMilliseconds;
long timestamp = (long) dto.UtcDateTime.Subtract(epoch).TotalSeconds;
優秀!這正是我需要的。太感謝了。標記爲答案。 – Robin
只需將其轉換爲常規的DateTime和AddHours即可。有很多關於轉換時間的指南。 – Equalsk
該字符串看起來像'yyyyMMddHHmmss'格式,您可以使用'DateTime.ParseExact'。但是,您還需要知道是否將其解釋爲本地時間,UTC時間或某個其他時區的時間 - 因爲Unix時間是基於UTC的時間。不知道源時區,你不能這樣做。 –
請也澄清你的意思是「我想增加小時偏移量」。 –