首页 > 解决方案 > 将日期添加到时间戳

问题描述

我需要在 unix 时间戳中添加一天。我从 API: 得到时间戳unixDate = (string)result["dt"];,结果: 1617789600。但现在我需要增加一天。我该怎么做?

   public static List<Tuple<string, string, string, string>> euDataDaily(string url)
   {
        var aTuple = new List<Tuple<string, string, string, string>> { };
        WebClient c = new WebClient();
        var data = c.DownloadString(url);
        JObject o = JObject.Parse(data);

        string conditionCode="";
        string unixDate = "";
        string dayTemp="";

        foreach (var result in o["daily"])
        {
               unixDate = (string)result["dt"];

               dayTemp = (string)result["temp"]["day"];

               foreach (var resultas in result["weather"])
               {
                    conditionCode = (string)resultas["icon"];
               }                   
        }
        List<Tuple<string, string>> icon = convertIcon(conditionCode);

        foreach (var tuple in icon)
        {
              aTuple.Add(Tuple.Create(dayTemp, tuple.Item1, tuple.Item2, unixDate));
        }
              return aTuple;
   }

JSON 示例:

   {
      "daily": [
        {
          "dt": 1595268000,
          "sunrise": 1608124431,
          "sunset": 1608160224,
          "temp": {
            "day": 278.14,
            "min": 273.15,
            "max": 279.4,
            "night": 273.15,
            "eve": 275.82,
            "morn": 275.35
          },
          "weather": {
            "clouds": 60,
            "pop": 0.84,
            "uvi": 2.41,
            "icon": "cloudy.gif"
          }
        }
      ]
    }

谢谢你的帮助!

标签: c#jsonapiunixjson.net

解决方案


由于您已经在使用 JObject,因此可以将其转换为 int 而不是字符串。如果换成unixDate = (string)result["dt"];unixDate = (int)result["dt"];您将拥有相同的数字,但使用 int 而不是字符串。然后您只需添加 86400(以秒为单位的一天)并将其转换回带有ToString().

请注意,强制(int)转换不适用于普通字符串,它特定于 JObject。如果您尝试在普通字符串上执行此操作,您将得到. 对于普通字符串,请改为(or )。InvalidCastExceptionint.Parseint.TryParse


推荐阅读