From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。
---
ProtosExpan/CustomTypes/Date.cs | 128 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 128 insertions(+), 0 deletions(-)
diff --git a/ProtosExpan/CustomTypes/Date.cs b/ProtosExpan/CustomTypes/Date.cs
new file mode 100644
index 0000000..c82bd8f
--- /dev/null
+++ b/ProtosExpan/CustomTypes/Date.cs
@@ -0,0 +1,128 @@
+namespace customTypes
+{
+ /// <summary>
+ /// gRPC送信用Date
+ /// SqlServerのDate型対応
+ /// </summary>
+ public partial class Date
+ {
+ public static readonly int MinValue = 10000101;
+ public static readonly DateTime MinDate = DateTime.Parse("1000/01/01");
+ public static readonly Date Default = new Date(0);
+
+ /// <summary>
+ /// 利用情報のプライマリーキー:1901/01/01
+ /// </summary>
+ public static readonly Date MinUseDate = new Date(19010101);
+
+ public Date(int val)
+ {
+ Value = val;
+ }
+
+ public Date(string val)
+ {
+ Value = int.Parse(val.Replace("/", string.Empty).Replace("-", string.Empty));
+ }
+
+ /// <summary>
+ /// 暗然変換
+ /// DateTime = Date
+ /// </summary>
+ /// <param name="grpcDecimal"></param>
+ public static implicit operator DateTime(Date grpcDate)
+ {
+ try
+ {
+ if (grpcDate.Value <= MinValue) { return MinDate; }
+ string date = grpcDate.Value.ToString();
+ int year = System.Convert.ToInt32(date.Substring(0, 4));
+ int mon = System.Convert.ToInt32(date.Substring(4, 2));
+ int day = System.Convert.ToInt32(date.Substring(6, 2));
+ return new DateTime(year, mon, day);
+ }
+ catch
+ {
+ return MinDate;
+ }
+ }
+
+ /// <summary>
+ /// 暗然変換
+ /// Date = DateTime
+ /// </summary>
+ /// <param name="value"></param>
+ public static implicit operator Date(DateTime value)
+ {
+ return new Date(int.Parse(value.ToString("yyyyMMdd")));
+ }
+
+ /// <summary>
+ /// 比較
+ /// </summary>
+ /// <param name="val"></param>
+ /// <returns></returns>
+ public int CompareTo(Date val)
+ {
+ DateTime self = this;
+ DateTime inVal = val;
+ return self.CompareTo(inVal);
+ }
+
+ /// <summary>
+ /// c#基本型の値を返す
+ /// </summary>
+ /// <returns></returns>
+ public DateTime ToDateTime()
+ {
+ DateTime self = this;
+ return self;
+ }
+
+ /// <summary>
+ /// 文字列
+ /// </summary>
+ /// <returns></returns>
+ public string ToText(string format = "yyyy/MM/dd")
+ {
+ DateTime self = this;
+ if (format.Length > 0) { return self.ToString(format); }
+ return self.ToString();
+ }
+
+ /// <summary>
+ /// SQL文の値セット
+ /// </summary>
+ /// <returns></returns>
+ public string ToSqlValue()
+ {
+ DateTime self = this;
+ return Value <= MinValue || self.CompareTo(MinDate) <= 0 ? "NULL" : $"'{self.ToString("yyyy/MM/dd")}'";
+ }
+
+ /// <summary>
+ /// 日付の±
+ /// </summary>
+ /// <param name="day"></param>
+ /// <returns></returns>
+ public Date Add(int day)
+ {
+ DateTime self = this;
+ Date date = self.AddDays((double)day);
+ return date;
+ }
+
+ /// <summary>
+ /// 日付引く
+ /// </summary>
+ /// <param name="beginDate"></param>
+ /// <returns></returns>
+ public int Subtract(Date beginDate)
+ {
+ DateTime end = this;
+ DateTime begin = beginDate;
+ TimeSpan ts = end - begin;
+ return ts.Days;
+ }
+ }
+}
--
Gitblit v1.10.0