Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回格式正确的时间_C#_Asp.net Core - Fatal编程技术网

C# 返回格式正确的时间

C# 返回格式正确的时间,c#,asp.net-core,C#,Asp.net Core,我有一段代码,当点击按钮时,它返回当前时间。但是,它返回的时间格式非常不可读。我如何将其格式化以使其看起来更好 using System; using Microsoft.AspNetCore.Mvc; using Clockwork.API.Models; namespace Clockwork.API.Controllers { [Route("api/[controller]")] public class CurrentTimeController : Controller {

我有一段代码,当点击按钮时,它返回当前时间。但是,它返回的时间格式非常不可读。我如何将其格式化以使其看起来更好

using System;
using Microsoft.AspNetCore.Mvc;
using Clockwork.API.Models;

namespace Clockwork.API.Controllers
{
[Route("api/[controller]")]
public class CurrentTimeController : Controller
{
    // GET api/currenttime
    [HttpGet]
    public IActionResult Get()
    {
        var utcTime = DateTime.UtcNow;
        var serverTime = DateTime.Now;
        var ip = this.HttpContext.Connection.RemoteIpAddress.ToString();

        var returnVal = new CurrentTimeQuery
        {
            UTCTime = utcTime,
            ClientIp = ip,
            Time = serverTime
        };

        using (var db = new ClockworkContext())
        {
            db.CurrentTimeQueries.Add(returnVal);
            var count = db.SaveChanges();
            Console.WriteLine("{0} records saved to database", count);

            Console.WriteLine();
            foreach (var CurrentTimeQuery in db.CurrentTimeQueries)
            {
                Console.WriteLine(" - {0}", CurrentTimeQuery.UTCTime);
            }
        }

        return Ok(returnVal);
    }
}
}
它返回的结果如下:

 {"currentTimeQueryId":15,"time":"2018-08-19T11:44:54.3348267-04:00","clientIp":"127.0.0.1","utcTime":"2018-08-19T15:44:54.3348267Z"}
你可以试试

DateTime.Now.ToShortTimeString();

你根本不应该试图改变它

这是一个ISO-8601格式的日期和时间,包括UTC偏移量。这很好——对于几乎所有的系统来说,解析都很容易。它是明确的,没有任何特定于文化的细节,比如日期和月份名称。这是伟大的-机器阅读

您正在生成JSON,它是机器可读的,而不是人类可读的。当然,作为一种交换格式,它是非常可读的,但它并不打算向最终用户显示。相反,无论向最终用户呈现数据的是什么,都应该对日期/时间值执行适当的格式设置。在这种情况下,不要尝试使用JSON机器的数据传输格式来实现这一点非常重要,因为它通常会导致歧义或无意义的文化敏感性

请注意,这不仅仅适用于日期和时间。以一个数值为例:虽然10.5对你来说可能是人类可读的,但这并不是法国人希望看到的10.5。他们会将其格式化为10,5。但我不建议在JSON中使用该字符串:我会将其设置为10.5作为一个数字,而不是string1,然后在Javascript中执行数字到人类可读格式的转换

基本上,在数据管道中始终尽可能保持数据与表示无关,直到数据到达表示层为止,表示层应该具有为实际用户理想地格式化数据所需的所有文化信息。通常情况下,你在其他地方没有所有的文化信息


1,除非您试图在试图表示严格的十进制数时将JSON解释为二进制浮点。不幸的是,JSON中没有真正的十进制格式。

{0:dd-MMM-yyyy-HH:mm:ss}是许多格式选项中的一个……您希望它是什么特定格式?您通常将DateTime.ToString与一些format@CamiloTerevinto:如果要向用户演示,请确定。如果您试图创建一种像JSON这样的机器可读格式,ISO-8601几乎总是最合适的格式。@DaisyShipton嗯,看起来更好,对我来说听起来不像机器可读格式:@CamiloTerevinto:但输出是JSON。这不是为了让人可读。如果目的是向人类显示数据,那么JSON并不是最好的格式。基本上OP需要决定一种方式或另一种方式:人类消费而不是JSON,可能是文化敏感的JSON或机器消费JSON,文化不敏感的。除了它生成JSON,这是一个坏主意-之后任何试图读取JSON的人都可能会产生歧义。这个想法是JSON是机器可读的,OP的输出已经是机器可读的了。有没有一种方法可以显示机器可读和人类可读。它应该是一个显示时间的应用程序,而不是机器可读的。@b homps:什么是显示时间的应用程序?什么在消耗JSON?如果是web应用程序,则在其中设置日期/时间的格式。请记住,不同的人可能希望以不同的方式查看数据。例如,在英国,今天是2018年8月20日,而在美国,有人将其命名为2018年8月20日。像8月7日这样的日期变得模棱两可。您可以使用月份名称来消除这种歧义,但是您使用哪种语言来表达这些歧义呢?这些都是文化方面的问题,通常应该由表示层来处理。我要问的问题是格式化的语法是什么。@b语法:格式化什么,在哪里?不清楚您的上下文是什么:是什么在使用这个JSON?我认为,这就是应该执行格式化的内容。如果是Javascript,那么您应该研究如何在Javascript中格式化日期/时间值。我只希望下面的代码以更易于阅读的格式显示。{currentTimeQueryId:15,时间:2018-08-19T11:44:54.3348267-04:00,客户端:127.0.0.1,utcTime:2018-08-19T15:44:54.3348267Z}