Skip to content

Commit 8b9dd04

Browse files
committed
feature: update epoch time conversion to support both UTC and local date time
1 parent c99a550 commit 8b9dd04

File tree

4 files changed

+41
-13
lines changed

4 files changed

+41
-13
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,8 @@ zus dt 1734895248
172172
```
173173
174174
> output: UTC: Sunday, December 22, 2024 7:20:48 PM +00:00
175-
> Local: Monday, December 23, 2024 3:20:48 AM +08:00
175+
176+
> output: Local: Monday, December 23, 2024 3:20:48 AM +08:00
176177
177178
## JWT Decoder
178179

Zus.Cli.Test/Commands/EpochTimeTests.cs

+22-5
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,46 @@ namespace Zus.Cli.Test.Commands;
66
public class EpochTimeTests
77
{
88
[Fact]
9-
public void Convert_Should_ReturnDateTime_ForValidEpochTime()
9+
public void Convert_Should_ReturnUTCDateTime_ForValidEpochTime()
1010
{
1111
// Arrange
1212
string epochTime = "1633072800";
13-
string expectedDateTime = $"UTC: Friday, October 1, 2021 7:20:00 AM +00:00{Environment.NewLine}Local: Friday, October 1, 2021 3:20:00 PM +08:00";
13+
string expectedDateTime = "UTC: Friday, October 1, 2021 7:20:00 AM +00:00";
1414

1515
// Act
16-
var result = EpochTime.Convert(epochTime);
16+
var result = EpochTime.Convert(epochTime, false);
1717

1818
// Assert
1919
Assert.NotNull(result.Result);
2020
Assert.True(result.Success);
2121
Assert.Equal(expectedDateTime, result.Result);
2222
}
2323

24+
[Fact]
25+
public void Convert_Should_ReturnLocalDateTime_ForValidEpochTime()
26+
{
27+
// Arrange
28+
string epochTime = "1633072800";
29+
string expectedDateTime = "Local: Friday, October 1, 2021 3:20:00 PM +08:00";
30+
31+
// Act
32+
var result = EpochTime.Convert(epochTime, true);
33+
34+
// Assert
35+
Assert.NotNull(result.Result);
36+
Assert.True(result.Success);
37+
Assert.Equal(expectedDateTime, result.Result);
38+
}
39+
40+
2441
[Fact]
2542
public void Convert_Should_ReturnError_ForInvalidEpochTime()
2643
{
2744
// Arrange
2845
string epochTime = "invalid";
2946

3047
// Act
31-
var result = EpochTime.Convert(epochTime);
48+
var result = EpochTime.Convert(epochTime, false);
3249

3350
// Assert
3451
Assert.NotNull(result.Error);
@@ -42,7 +59,7 @@ public void Convert_Should_ReturnError_ForEmptyEpochTime()
4259
string epochTime = "";
4360

4461
// Act
45-
var result = EpochTime.Convert(epochTime);
62+
var result = EpochTime.Convert(epochTime, false);
4663

4764
// Assert
4865
Assert.NotNull(result.Error);

Zus.Cli/Commands/EpochTime.cs

+12-6
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,25 @@ namespace Zus.Cli.Commands;
44

55
public static class EpochTime
66
{
7-
internal static CommandResult Convert(string epochTime)
7+
internal static CommandResult Convert(string epochTime, bool local)
88
{
99
try
1010
{
1111
var utcDateTime = DateTimeOffset.FromUnixTimeSeconds(long.Parse(epochTime)).UtcDateTime;
12-
TimeZoneInfo localTimeZone = TimeZoneInfo.Local;
13-
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, localTimeZone);
14-
12+
if (local)
13+
{
14+
TimeZoneInfo localTimeZone = TimeZoneInfo.Local;
15+
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, localTimeZone);
16+
return new CommandResult
17+
{
18+
Result = $"Local: {localDateTime:dddd, MMMM d, yyyy h:mm:ss tt zzz}"
19+
};
20+
}
1521
return new CommandResult
1622
{
17-
Result =
18-
$"UTC: {utcDateTime:dddd, MMMM d, yyyy h:mm:ss tt zzz}{Environment.NewLine}Local: {localDateTime:dddd, MMMM d, yyyy h:mm:ss tt zzz}"
23+
Result = $"UTC: {utcDateTime:dddd, MMMM d, yyyy h:mm:ss tt zzz}"
1924
};
25+
2026
}
2127
catch (Exception ex)
2228
{

Zus.Cli/Program.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,11 @@
111111
app.AddCommand("guid", () => Display.Result(UniqueID.Generate()))
112112
.WithDescription("Generate a Guid");
113113

114-
app.AddCommand("dt", ([Argument] string epochTime) => Display.Result(EpochTime.Convert(epochTime)))
114+
app.AddCommand("dt", ([Argument] string epochTime) =>
115+
{
116+
Display.Result(EpochTime.Convert(epochTime, false));
117+
Display.Result(EpochTime.Convert(epochTime, true));
118+
})
115119
.WithDescription("Convert epoch time to date time.");
116120

117121
app.Run();

0 commit comments

Comments
 (0)