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