Дополнительная подсказка для ЯДРА СЕТИ ASP:
Интерфейс:
public interface IViewRenderer
{
Task<string> RenderAsync<TModel>(Controller controller, string name, TModel model);
}
Реализация:
public class ViewRenderer : IViewRenderer
{
private readonly IRazorViewEngine viewEngine;
public ViewRenderer(IRazorViewEngine viewEngine) => this.viewEngine = viewEngine;
public async Task<string> RenderAsync<TModel>(Controller controller, string name, TModel model)
{
ViewEngineResult viewEngineResult = this.viewEngine.FindView(controller.ControllerContext, name, false);
if (!viewEngineResult.Success)
{
throw new InvalidOperationException(string.Format("Could not find view: {0}", name));
}
IView view = viewEngineResult.View;
controller.ViewData.Model = model;
await using var writer = new StringWriter();
var viewContext = new ViewContext(
controller.ControllerContext,
view,
controller.ViewData,
controller.TempData,
writer,
new HtmlHelperOptions());
await view.RenderAsync(viewContext);
return writer.ToString();
}
}
Регистрация в Startup.cs
...
services.AddSingleton<IViewRenderer, ViewRenderer>();
...
И использование в контроллере:
public MyController: Controller
{
private readonly IViewRenderer renderer;
public MyController(IViewRendere renderer) => this.renderer = renderer;
public async Task<IActionResult> MyViewTest
{
var view = await this.renderer.RenderAsync(this, "MyView", model);
return new OkObjectResult(view);
}
}
Начать здесь - раздел 8.5.3. « Часовые пояса » из документации.
Разница между CURRENT_TIMESTAMP и LOCALTIMESTAMP заключается в типе результата - первый возвращает «метку времени с часовым поясом», а второй - « timestamp ":
milen=> select CURRENT_TIMESTAMP;
now
-------------------------------
2009-09-05 01:21:37.595704+03
(1 row)
milen=> select LOCALTIMESTAMP;
timestamp
----------------------------
2009-09-05 01:21:41.956355
(1 row)
Другое дело, в каком часовом поясе вы хотите видеть текущее время. В этом случае важен часовой пояс по умолчанию (который можно установить несколькими способами, все описано в разделе, ссылка на который приведена выше). Также вы можете использовать «AT TIME ZONE» в запросе, чтобы получить текущее время в определенном часовом поясе без «возни» с настройкой «часового пояса»:
milen=> select CURRENT_TIMESTAMP AT TIME ZONE 'UTC';
timezone
----------------------------
2009-09-04 22:21:44.418236
(1 row)