public override IDisplayResult Display(DateTimeField field, BuildFieldDisplayContext context) { return(Initialize <DisplayDateTimeFieldViewModel>(GetDisplayShapeType(context), async model => { model.LocalDateTime = field.Value == null ? (DateTime?)null : (await _localClock.ConvertToLocalAsync(field.Value.Value)).DateTime; model.Field = field; model.Part = context.ContentPart; model.PartFieldDefinition = context.PartFieldDefinition; }) .Location("Detail", "Content") .Location("Summary", "Content")); }
private async ValueTask PopulateViewModel(PublishLaterPart part, PublishLaterPartViewModel viewModel) { viewModel.ContentItem = part.ContentItem; viewModel.ScheduledPublishUtc = part.ScheduledPublishUtc; viewModel.ScheduledPublishLocalDateTime = part.ScheduledPublishUtc.HasValue ? (await _localClock.ConvertToLocalAsync(part.ScheduledPublishUtc.Value)).DateTime : (DateTime?)null; }
public async Task <IHtmlContent> DateTime(IHtmlHelper Html, DateTime?Utc, string Format) { Utc = Utc ?? _clock.UtcNow; var zonedTime = await _localClock.ConvertToLocalAsync(Utc.Value); if (Format == null) { Format = T[LongDateTimeFormat].Value; } return(Html.Raw(Html.Encode(zonedTime.ToString(Format, CultureInfo.CurrentUICulture)))); }
/// <summary> /// Converts the given UTC date to the given time-zone by temporarily setting it in the HTTP context. /// </summary> /// <param name="dateTimeUtc">UTC date.</param> /// <param name="timeZoneId">IANA time-zone ID.</param> /// <param name="localClock">IANA time-zone ID.</param> /// <param name="httpContext">HTTP context to be used to temporarily set in the HTTP context.</param> /// <returns>Local date.</returns> public static async Task <DateTime> ConvertToLocalAsync( this ILocalClock localClock, DateTime dateTimeUtc, string timeZoneId, HttpContext httpContext) => (await ExecuteInDifferentTimeZone( httpContext, timeZoneId, async() => await localClock.ConvertToLocalAsync( new DateTimeOffset( dateTimeUtc.Kind != DateTimeKind.Utc ? new DateTime(dateTimeUtc.Ticks, DateTimeKind.Utc) : dateTimeUtc)))).DateTime;
public async Task <IHtmlContent> DateTime(IHtmlHelper Html, DateTime?Utc, string Format) { Utc = Utc ?? _clock.UtcNow; var zonedTime = await _localClock.ConvertToLocalAsync(Utc.Value); if (Format == null) { // We use the Plural localizer so we don't need to resolve another one. // Internally it will use the string localizer by passing 0 as count. Format = T[LongDateTimeFormat, LongDateTimeFormat, 0].Value; } return(Html.Raw(Html.Encode(zonedTime.ToString(Format, CultureInfo.CurrentUICulture)))); }
public override IDisplayResult Edit(CommonPart part, BuildPartEditorContext context) { var settings = context.TypePartDefinition.GetSettings <CommonPartSettings>(); if (settings.DisplayDateEditor) { return(Initialize <DateEditorViewModel>("CommonPart_Edit__Date", async model => { model.LocalDateTime = part.ContentItem.CreatedUtc.HasValue ? (DateTime?)(await _localClock.ConvertToLocalAsync(part.ContentItem.CreatedUtc.Value)).DateTime : null; })); } return(null); }
/// <summary> /// Converts a <see cref="DateTime" /> to the specified <see cref="ITimeZone" /> instance. /// </summary> public static Task <DateTimeOffset> ConvertToLocalAsync(this ILocalClock localClock, DateTime dateTime) { DateTime dateTimeUtc; switch (dateTime.Kind) { case DateTimeKind.Utc: dateTimeUtc = dateTime; break; case DateTimeKind.Local: dateTimeUtc = dateTime.ToUniversalTime(); break; default: //DateTimeKind.Unspecified dateTimeUtc = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc); break; } return(localClock.ConvertToLocalAsync(new DateTimeOffset(dateTimeUtc))); }
public async ValueTask <FluidValue> ProcessAsync(FluidValue input, FilterArguments arguments, TemplateContext context) { DateTimeOffset value = DateTimeOffset.MinValue; if (input.Type == FluidValues.String) { var stringValue = input.ToStringValue(); if (stringValue == "now" || stringValue == "today") { value = await _localClock.LocalNowAsync; } else { if (!DateTimeOffset.TryParse(stringValue, context.CultureInfo, DateTimeStyles.AssumeUniversal, out value)) { return(NilValue.Instance); } } } else { switch (input.ToObjectValue()) { case DateTime dateTime: value = dateTime; break; case DateTimeOffset dateTimeOffset: value = dateTimeOffset; break; default: return(NilValue.Instance); } } return(new ObjectValue(await _localClock.ConvertToLocalAsync(value))); }
public override IDisplayResult Edit(CommonPart part) { var settings = GetSettings(part); if (settings.DisplayDateEditor) { return(Initialize <DateEditorViewModel>("CommonPart_Edit__Date", async model => { model.LocalDateTime = part.ContentItem.CreatedUtc.Value == null ? (DateTime?)null : (await _localClock.ConvertToLocalAsync(part.ContentItem.CreatedUtc.Value)).DateTime; })); } return(null); }