diff --git a/Oqtane.Client/Modules/Admin/Jobs/Edit.razor b/Oqtane.Client/Modules/Admin/Jobs/Edit.razor
index 34780aa0..ec6532b2 100644
--- a/Oqtane.Client/Modules/Admin/Jobs/Edit.razor
+++ b/Oqtane.Client/Modules/Admin/Jobs/Edit.razor
@@ -56,7 +56,7 @@
-
+
@@ -69,7 +69,7 @@
-
+
@@ -82,7 +82,7 @@
-
+
@@ -97,22 +97,22 @@
@code {
- private ElementReference form;
- private bool validated = false;
- private int _jobId;
- private string _name = string.Empty;
- private string _jobType = string.Empty;
- private string _isEnabled = "True";
- private string _interval = string.Empty;
- private string _frequency = string.Empty;
- private DateTime? _startDate = null;
- private string _startTime = string.Empty;
- private DateTime? _endDate = null;
- private string _endTime = string.Empty;
- private string _retentionHistory = string.Empty;
- private DateTime? _nextDate = null;
- private string _nextTime = string.Empty;
- private string createdby;
+ private ElementReference form;
+ private bool validated = false;
+ private int _jobId;
+ private string _name = string.Empty;
+ private string _jobType = string.Empty;
+ private string _isEnabled = "True";
+ private string _interval = string.Empty;
+ private string _frequency = string.Empty;
+ private DateTime? _startDate = null;
+ private DateTime? _startTime = null;
+ private DateTime? _endDate = null;
+ private DateTime? _endTime = null;
+ private string _retentionHistory = string.Empty;
+ private DateTime? _nextDate = null;
+ private DateTime? _nextTime = null;
+ private string createdby;
private DateTime createdon;
private string modifiedby;
private DateTime modifiedon;
@@ -133,9 +133,9 @@
_interval = job.Interval.ToString();
_frequency = job.Frequency;
(_startDate, _startTime) = Utilities.UtcAsLocalDateAndTime(job.StartDate);
- (_endDate, _endTime) = Utilities.UtcAsLocalDateAndTime(job.EndDate);
+ (_endDate, _endTime) = Utilities.UtcAsLocalDateAndTime(job.EndDate);
_retentionHistory = job.RetentionHistory.ToString();
- (_nextDate, _nextTime) = Utilities.UtcAsLocalDateAndTime(job.NextExecution);
+ (_nextDate, _nextTime) = Utilities.UtcAsLocalDateAndTime(job.NextExecution);
createdby = job.CreatedBy;
createdon = job.CreatedOn;
modifiedby = job.ModifiedBy;
diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs
index cdf0e05e..26eec073 100644
--- a/Oqtane.Shared/Shared/Utilities.cs
+++ b/Oqtane.Shared/Shared/Utilities.cs
@@ -490,35 +490,39 @@ namespace Oqtane.Shared
return $"[{@class.GetType()}] {message}";
}
- public static DateTime? LocalDateAndTimeAsUtc(DateTime? date, string time, TimeZoneInfo localTimeZone = null)
+ public static DateTime? LocalDateAndTimeAsUtc(DateTime? date, DateTime? time, TimeZoneInfo localTimeZone = null)
{
localTimeZone ??= TimeZoneInfo.Local;
+
if (date != null)
{
- if (!string.IsNullOrEmpty(time))
+ if (time != null)
{
- return TimeZoneInfo.ConvertTime(DateTime.Parse(date.Value.Date.ToShortDateString() + " " + time), localTimeZone, TimeZoneInfo.Utc);
+ DateTime localDateTime = date.Value.Date.Add(time.Value.TimeOfDay);
+ return TimeZoneInfo.ConvertTimeToUtc(localDateTime, localTimeZone);
}
- return TimeZoneInfo.ConvertTime(date.Value.Date, localTimeZone, TimeZoneInfo.Utc);
+
+ return TimeZoneInfo.ConvertTimeToUtc(date.Value.Date, localTimeZone);
}
+
return null;
}
- public static (DateTime? date, string time) UtcAsLocalDateAndTime(DateTime? dateTime, TimeZoneInfo timeZone = null)
+ public static (DateTime? date, DateTime? time) UtcAsLocalDateAndTime(DateTime? dateTime, TimeZoneInfo timeZone = null)
{
timeZone ??= TimeZoneInfo.Local;
DateTime? localDateTime = null;
- string localTime = string.Empty;
+ DateTime? localTime = null;
if (dateTime.HasValue && dateTime?.Kind != DateTimeKind.Local)
{
if (dateTime?.Kind == DateTimeKind.Unspecified)
{
// Treat Unspecified as Utc not Local. This is due to EF Core, on some databases, after retrieval will have DateTimeKind as Unspecified.
- // All values in database should be UTC.
+ // All values in the database should be UTC.
// Normal .net conversion treats Unspecified as local.
// https://docs.microsoft.com/en-us/dotnet/api/system.timezoneinfo.converttime?view=net-6.0
- localDateTime = TimeZoneInfo.ConvertTime(new DateTime(dateTime.Value.Ticks, DateTimeKind.Utc), timeZone);
+ localDateTime = TimeZoneInfo.ConvertTime(new DateTimeOffset(dateTime.Value.Ticks, TimeSpan.Zero), timeZone).DateTime;
}
else
{
@@ -526,14 +530,17 @@ namespace Oqtane.Shared
}
}
- if (localDateTime != null && localDateTime.Value.TimeOfDay.TotalSeconds != 0)
+ if (localDateTime != null)
{
- localTime = localDateTime.Value.ToString("HH:mm");
+ localTime = localDateTime.Value.TimeOfDay.TotalSeconds != 0 ? localDateTime.Value.Date.Add(localDateTime.Value.TimeOfDay) : (DateTime?)null;
}
return (localDateTime?.Date, localTime);
}
+
+
+
[Obsolete("ContentUrl(Alias alias, int fileId) is deprecated. Use FileUrl(Alias alias, int fileId) instead.", false)]
public static string ContentUrl(Alias alias, int fileId)
{