Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit df06e56

Browse files
author
Ian Hays
committed
Fixed AccessTime, WriteTime, and CreationTime getters
Previously, AccessTime, WriteTime, and CreationTime would return DateTime objects with an unspecified DateTimeKind. This commit modified that behavior to have them instead return Local DateTime objects. Extra tests were also added to catch more potential error cases. - Resolves #2603 - Resolves #2610
1 parent 28132be commit df06e56

File tree

6 files changed

+21
-9
lines changed

6 files changed

+21
-9
lines changed

src/System.IO.FileSystem/src/System/IO/File.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ public static void SetCreationTimeUtc(String path, DateTime creationTime)
260260
public static DateTime GetCreationTime(String path)
261261
{
262262
String fullPath = PathHelpers.GetFullPathInternal(path);
263-
return FileSystem.Current.GetCreationTime(fullPath).DateTime;
263+
return FileSystem.Current.GetCreationTime(fullPath).LocalDateTime;
264264
}
265265

266266
[System.Security.SecuritySafeCritical] // auto-generated
@@ -286,7 +286,7 @@ public static void SetLastAccessTimeUtc(String path, DateTime lastAccessTimeUtc)
286286
public static DateTime GetLastAccessTime(String path)
287287
{
288288
String fullPath = PathHelpers.GetFullPathInternal(path);
289-
return FileSystem.Current.GetLastAccessTime(fullPath).DateTime;
289+
return FileSystem.Current.GetLastAccessTime(fullPath).LocalDateTime;
290290
}
291291

292292
[System.Security.SecuritySafeCritical] // auto-generated
@@ -312,7 +312,7 @@ public static void SetLastWriteTimeUtc(String path, DateTime lastWriteTimeUtc)
312312
public static DateTime GetLastWriteTime(String path)
313313
{
314314
String fullPath = PathHelpers.GetFullPathInternal(path);
315-
return FileSystem.Current.GetLastWriteTime(fullPath).DateTime;
315+
return FileSystem.Current.GetLastWriteTime(fullPath).LocalDateTime;
316316
}
317317

318318
[System.Security.SecuritySafeCritical] // auto-generated

src/System.IO.FileSystem/src/System/IO/UnixFileSystemObject.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public DateTimeOffset LastAccessTime
193193
get
194194
{
195195
EnsureStatInitialized();
196-
return DateTimeOffset.FromUnixTimeSeconds(_fileinfo.atime);
196+
return DateTimeOffset.FromUnixTimeSeconds(_fileinfo.atime).ToLocalTime();
197197
}
198198
set { SetAccessWriteTimes((IntPtr)value.ToUnixTimeSeconds(), null); }
199199
}
@@ -203,7 +203,7 @@ public DateTimeOffset LastWriteTime
203203
get
204204
{
205205
EnsureStatInitialized();
206-
return DateTimeOffset.FromUnixTimeSeconds(_fileinfo.mtime);
206+
return DateTimeOffset.FromUnixTimeSeconds(_fileinfo.mtime).ToLocalTime();
207207
}
208208
set { SetAccessWriteTimes(null, (IntPtr)value.ToUnixTimeSeconds()); }
209209
}

src/System.IO.FileSystem/tests/Directory/GetSetTimes.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ public void SettingUpdatesProperties()
7272
{
7373
DateTime dt = new DateTime(2014, 12, 1, 12, 0, 0, tuple.Item3);
7474
tuple.Item1(testDir.FullName, dt);
75-
Assert.Equal(dt, tuple.Item2(testDir.FullName));
75+
var result = tuple.Item2(testDir.FullName);
76+
Assert.Equal(dt, result);
77+
Assert.Equal(dt.ToLocalTime(), result.ToLocalTime());
78+
Assert.Equal(dt.ToUniversalTime(), result.ToUniversalTime());
7679
});
7780
}
7881

src/System.IO.FileSystem/tests/DirectoryInfo/GetSetTimes.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ public void SettingUpdatesProperties()
5252
{
5353
DateTime dt = new DateTime(2014, 12, 1, 12, 0, 0, tuple.Item3);
5454
tuple.Item1(testDir, dt);
55-
Assert.Equal(dt, tuple.Item2(testDir));
55+
var result = tuple.Item2(testDir);
56+
Assert.Equal(dt, result);
57+
Assert.Equal(dt.ToLocalTime(), result.ToLocalTime());
58+
Assert.Equal(dt.ToUniversalTime(), result.ToUniversalTime());
5659
});
5760
}
5861

src/System.IO.FileSystem/tests/File/GetSetTimes.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,10 @@ public void SettingUpdatesProperties()
7373
{
7474
DateTime dt = new DateTime(2014, 12, 1, 12, 0, 0, tuple.Item3);
7575
tuple.Item1(testFile.FullName, dt);
76-
Assert.Equal(dt, tuple.Item2(testFile.FullName));
76+
var result = tuple.Item2(testFile.FullName);
77+
Assert.Equal(dt, result);
78+
Assert.Equal(dt.ToLocalTime(), result.ToLocalTime());
79+
Assert.Equal(dt.ToUniversalTime(), result.ToUniversalTime());
7780
});
7881
}
7982

src/System.IO.FileSystem/tests/FileInfo/GetSetTimes.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ public void SettingUpdatesProperties()
5353
{
5454
DateTime dt = new DateTime(2014, 12, 1, 12, 0, 0, tuple.Item3);
5555
tuple.Item1(testFile, dt);
56-
Assert.Equal(dt, tuple.Item2(testFile));
56+
var result = tuple.Item2(testFile);
57+
Assert.Equal(dt, result);
58+
Assert.Equal(dt.ToLocalTime(), result.ToLocalTime());
59+
Assert.Equal(dt.ToUniversalTime(), result.ToUniversalTime());
5760
});
5861
}
5962

0 commit comments

Comments
 (0)