【问题标题】:c# datetime format (yyyy-mm-ddT00:00:00) for google chart datec# 谷歌图表日期的日期时间格式(yyyy-mm-ddT00:00:00)
【发布时间】:2018-05-21 22:53:12
【问题描述】:

我即将在谷歌图表中显示 .NetCore 数据。日期格式为日期时间。

public List<object[]> GetProdVal()
{
    List<object[]> value = new List<object[]>();
    foreach (var item in valuelist)
    {
        object[] val = {
        item.Date,
        item.TotalCost
        };
        value.Add(val);
    }
    return value;
} 

当我将日期格式视为谷歌图表中的字符串时,它会返回值并且运行良好。

  prodval_chartData = @Json.Serialize(ViewBag.productionvalue, new Newtonsoft.Json.JsonSerializerSettings {
                StringEscapeHandling =Newtonsoft.Json.StringEscapeHandling.EscapeHtml});

var prodval_data = new google.visualization.DataTable();
            prodval_data.addColumn('date', 'Date');
            prodval_data.addColumn('number', 'Total');
            prodval_data.addRows(prodval_chartData);

但是当我将格式更改为最新时,我收到以下错误:

Uncaught Error: Type mismatch. Value 2018-04-22T00:00:00 does not match type date in column index 0

【问题讨论】:

标签: c# .net datetime google-visualization


【解决方案1】:

试试这个:

public List<object[]> GetProdVal()
{
    List<object[]> value = new List<object[]>();
    foreach (var item in valuelist)
    {
        object[] val = {
        $"new Date('{item.Date.ToString("yyyy-MM-ddThh:mm:ss")}')",
        item.TotalCost
        };
        value.Add(val);
    }
    return value;
}

【讨论】:

  • 感谢分享,问题依然存在,当我将谷歌图表列类型更改为最新时,它不会返回任何内容并给出相同的错误。 :( 当我将类型更改为字符串时,它返回例如 new Date('2018-05-18T12:00:00')
  • 所以,请在您的问题中添加 prodval_chartData 变量的值。帮助我们查看任何格式问题。因为 Google DataTable 提供的数据应该是数组的数组。您可以将函数的结果类型更改为 object[][] 并将结果返回为“return value.ToArray()”。可能会补充我的答案
【解决方案2】:

我设法解决了如下问题:

控制器:

    public List<object[]> GetProdVal()
    {
        List<object[]> value = new List<object[]>();
        foreach (var item in valuelist)
        {
            DateTimeConvertor dtc = new DateTimeConvertor();
            double.TryParse(dtc.Year(item.Date.ToString()), out double year);
            double.TryParse(dtc.Month(item.Date.ToString()), out double month);
            double.TryParse(dtc.Day(item.Date.ToString()), out double day);
            object[] val = {
            year,
            month,
            day,                
            item.TotalCost
            };
            value.Add(val);
        }
        return value;
    }

查看:

        prodval_chartData = @Json.Serialize(ViewBag.productionvalue, new Newtonsoft.Json.JsonSerializerSettings {
            StringEscapeHandling =Newtonsoft.Json.StringEscapeHandling.EscapeHtml});

      var prodval_data = new google.visualization.DataTable();
        prodval_data.addColumn('number', 'year');
        prodval_data.addColumn('number', 'month');
        prodval_data.addColumn('number', 'day');
        prodval_data.addColumn('number', 'Total');
        prodval_data.addRows(prodval_chartData);
        //Insert new column for generated date:
        prodval_data.insertColumn(0, 'date', 'Date');
        //Count number of iterations:
        var count = prodval_data.getNumberOfRows();

        for (var i = 0; i < count; i++) {
            //Read year, month, day and calculate date
            var year = prodval_data.getValue(i, 1);
            var month = prodval_data.getValue(i, 2)-1;
            var day = prodval_data.getValue(i, 3);

            var date = new Date(year, month, day);

            prodval_data.setValue(i, 0, date);
        }
        // remove columns of year, month, day
        prodval_data.removeColumn(1);
        prodval_data.removeColumn(1);
        prodval_data.removeColumn(1);

【讨论】:

    猜你喜欢
    • 2014-12-02
    • 2020-08-28
    • 1970-01-01
    • 2019-08-25
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多