我正在编写一个应用程序,但无法找出一个函数来使用 C# 通过“开始”和“结束”日期动态设置一系列特定的 DateTime 对象。
这是我的标准:
本质上,目标是每周自动更新这些日期,以便可以将它们转换为 Unix 格式以供 API 调用。我无法对这些值进行硬编码,因为这些对象必须每周动态更改。
例如,假设情况 3 的开始日期为 4/3/23,结束日期为 4/7/23。下周当此应用程序启动时,我需要将这些对象更新为开始日期 4/10/23 到结束日期 4/14/23。
我对开发相当陌生,因此任何示例或指导都将受到高度赞赏,即使解决方案没有指定上述确切情况。
我已经走到这一步,直到我意识到这个过程不能是静态的、硬编码的值。我将使用基于案例 3 的示例:
DateTime day1 = new DateTime(2023, 4, 3, 0, 00, 00);
DateTime day2 = new DateTime(2023, 4, 7, 0, 00, 00);
long unixDay1 = ((DateTimeOffset)day1).ToUnixTimeSeconds();
long unixDay2 = ((DateTimeOffset)day2).ToUnixTimeSeconds();
//URL used for API call
var punchHistoryURL =
$"https://www.paycomonline.net/v4/rest/index.php/api/v1/employee/{fields.EECODE_View}/" + "punchhistory" + $"?startdate={unixDay1}&enddate={unixDay2}";
我需要有关如何执行此操作的指导,但以便 day1 和 day2 对象反映下周的当前日期。
既然你正在处理“星期几”,我想你可能只是抓住Unix时间戳并除以
7 * 86400
。
每天有
86400
秒,每周有 7
天。
所以,一整周就是 7 * 86400
秒。
这可以通过简单的数学计算来实现,因为不涉及闰年的东西。
因为 1970 年 1 月 1 日是星期四,所以您可以轻松获得上星期四凌晨 12:00 的 Unix 时间戳。
long lastGmtThursdayMidnight = DatetimeOffset.Now.ToUnixTimeSeconds() / 86400 / 7 * 86400 * 7;
此后,您可以根据需要通过添加或减去
n * 86400
和n * 3600
来调整结果。
有几个细节需要注意。
8 * 3600
来获取我的时区午夜的时间戳。