C# で先月の日付を取得する

こんにちは。エクセルソフトの田淵です。

社内で ASP.NET で作った簡易 Google Analytics チェッカーが動いているのですが、今月に入って Development mode エラー(記録しておかなかったので不鮮明ですが)で動かなくなっていました。

結論から言うと私のコードのバグなのですがw

先月の1日を取得する際に

var now = DateTimeOffset.UtcNow; 
var lastMonth = new DateTimeOffset(now.Year, now.Month - 1, 1, 0, 0, 0, new TimeSpan(0)); 

というしょうもない書き方をしてしまっていたというだけでした。
ちゃんと DateTimeOffset オブジェクトとして、

var now = DateTimeOffset.UtcNow;
var lastMonth = new DateTimeOffset(now.Year, now.Month, 1, 0, 0, 0, new TimeSpan(0)).AddMonths(-1);

と書きましょうというお話でした。しょうもなw

DateTime についてやその他の書き方は公式ドキュメントや Dobon.NET を参考にしてください。Qiita の記事もまとまってて良いですね。

DateTime 構造体 (System) | Microsoft Docs

明日、昨日、年(あるいは月や週)の最初の日と最後の日などを取得する - .NET Tips (VB.NET,C#...)

[.NET] 日付計算いろいろ - Qiita

宣伝

私が所属する エクセルソフト では、開発者向けの様々なツール/ライブラリを提供しています。

@ytabuchiKudan AR SDK という AR の SDK と Kong という API Gateway のプロダクトを主に担当しています。

興味ある方は覗いていってください~

以上です。

タイトルとURLをコピーしました