【问题标题】:C# Date Converting form /Date(1453154400000)/ format to normal date (DD/MM/YY)C# 日期转换表格 /Date(1453154400000)/ 格式为正常日期 (DD/MM/YY)
【发布时间】:2018-10-31 05:53:41
【问题描述】:

我正在将 excel 文件导入哈希表,然后将哈希表作为 WebServiceResponse 响应的一部分传递到前端以进行显示。某些文件的数据显示,但对于我尝试导入的某些文件,日期显示为 /日期(1453154400000)/.

正在寻找一种将这种格式转换为 DD/MM/YYYY 日期格式的方法

   public WebServiceResponse ReadFile(string fileName, string inputFormat)
    {
        string filePath = Server.MapPath("~/upload/");

      string filePath = Server.MapPath("~/upload/");

        string strConnection =
            string.Format(
      "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source={0}{1};" 
           + "Extended Properties=\"Excel 
      12.0;HDR=NO;IMEX=1;ImportMixedTypes=Text;\"", filePath, fileName);

        var jsonArray = new List<Hashtable>();


     string. 
        using (var cnConnection = new OleDbConnection(strConnection))
        { 
            cnConnection.Open();

            try
            {

                var cmdSelectSections = new 
       OleDbCommand(string.Format("SELECT * FROM [{0}]", "Sheet1$"), 
           cnConnection);

                OleDbDataReader drdSections = 
             cmdSelectSections.ExecuteReader();

                // Import excel rows into XML files 
                if (drdSections != null)
                {
                    while (drdSections.Read())
                    {

                        var record = new Hashtable();

                        for (int j = 0; j < drdSections.FieldCount; j++)
                        {
     record.Add("Col" + j.ToString(CultureInfo.InvariantCulture), 
                 drdSections[j]);
                        }

                        jsonArray.Add(record);
                        //}
                    }
                }
            }
            finally
            {

                cnConnection.Close();
            }

        }
        var coldef = new string[20]; 
        var numberOfCols = jsonArray[0].Count; 
        var i = 0; 
        var result = new Hashtable
                         {
                             {"colDef", coldef},
                             {"data", jsonArray}
                         };

        return WebServiceResponse.PassResponse(result);
    }

【问题讨论】:

  • 1234656000000 代表什么日期?
  • /Date(1453154400000)/ 在电子表格上是 01/19/2016
  • 是 1453154400000 long int 值吗?
  • @Prince 该文本来自哪里? /Date(1453154400000)/ 是微软在没有关于 JSON 日期的约定时引入的非常古老且废弃的 JSON 日期格式。您的服务是否返回该文本或 Excel 是否包含该文本? WebServiceResponse 是什么,PassResponse 有什么作用?

标签: c# excel date


【解决方案1】:

你可以试试这个

var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var date = epoch.AddMilliseconds(1453154400000).ToString("dd/MM/yy");

希望你能得到正确的时间

【讨论】:

  • DateTimeOffset.FromUnixTimeMilliseconds(1453154400000) 也可以工作并节省手动构造/计算。但是,OP 仍然具有/Date(x)/ 的格式,他们需要在其中提取x。虽然这部分应该是微不足道的,但我不确定它是否对 OP 很明显。完整的答案将包括该步骤
猜你喜欢
  • 2022-01-25
  • 2012-03-05
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多