diff --git a/src/Nullinside.Api.Common/DateTimeExtensions.cs b/src/Nullinside.Api.Common/DateTimeExtensions.cs
new file mode 100644
index 0000000..dca21f7
--- /dev/null
+++ b/src/Nullinside.Api.Common/DateTimeExtensions.cs
@@ -0,0 +1,18 @@
+namespace Nullinside.Api.Common;
+
+///
+/// Extension methods for .
+///
+public static class DateTimeExtensions {
+ ///
+ /// Converts unix timestamp to a .
+ ///
+ /// The unix timestamp.
+ /// The DateTime representation of the unix timestamp.
+ public static DateTime FromUnixTimestamp(double unixTimestamp) {
+ // Unix timestamp is seconds past epoch
+ var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
+ dateTime = dateTime.AddSeconds(unixTimestamp / 1000d).ToLocalTime();
+ return dateTime;
+ }
+}
\ No newline at end of file
diff --git a/src/Nullinside.Api.Common/Twitch/OnMessageReceivedArgsExtensions.cs b/src/Nullinside.Api.Common/Twitch/OnMessageReceivedArgsExtensions.cs
new file mode 100644
index 0000000..9d3a62b
--- /dev/null
+++ b/src/Nullinside.Api.Common/Twitch/OnMessageReceivedArgsExtensions.cs
@@ -0,0 +1,21 @@
+using TwitchLib.Client.Events;
+
+namespace Nullinside.Api.Common.Twitch;
+
+///
+/// Extensions for the class to make working with twitch chat messages easier.
+///
+public static class OnMessageReceivedArgsExtensions {
+ ///
+ /// Gets the timestamp of when the message was sent, in UTC.
+ ///
+ /// The event arguments.
+ /// The if successful, null otherwise.
+ public static DateTime? GetTimestamp(this OnMessageReceivedArgs e) {
+ if (double.TryParse(e.ChatMessage.TmiSentTs, out double timestampD)) {
+ return DateTimeExtensions.FromUnixTimestamp(timestampD);
+ }
+
+ return null;
+ }
+}
\ No newline at end of file