Open pendingtask opened 1 year ago
ShardingContainer类中采用的日期格式化方式为斜杠分隔, 如"yyyy/MM/dd HH:mm:00"
ShardingContainer
public IShardingBuilder SetDateSharding<TEntity>(string shardingField, ExpandByDateMode expandByDateMode, params (DateTime startTime, DateTime endTime, string sourceName)[] ranges) { //... (string conExpression, string startTimeFormat, Func<DateTime, DateTime> nextTime) paramter = expandByDateMode switch { ExpandByDateMode.PerMinute => ("0 * * * * ? *", "yyyy/MM/dd HH:mm:00", x => x.AddMinutes(1)), ExpandByDateMode.PerHour => ("0 0 * * * ? *", "yyyy/MM/dd HH:00:00", x => x.AddHours(1)), ExpandByDateMode.PerDay => ("0 0 0 * * ? *", "yyyy/MM/dd 00:00:00", x => x.AddDays(1)), ExpandByDateMode.PerMonth => ("0 0 0 1 * ? *", "yyyy/MM/01 00:00:00", x => x.AddMonths(1)), ExpandByDateMode.PerYear => ("0 0 0 1 1 ? *", "yyyy/01/01 00:00:00", x => x.AddYears(1)), _ => throw new Exception("expandByDateMode参数无效") }; //确保之前的表已存在 var theTime = ranges.Min(x => x.startTime); theTime = DateTime.Parse(theTime.ToString(paramter.startTimeFormat)); //... }
可能在特定环境下在执行DateTime.Parse(theTime.ToString(paramter.startTimeFormat));时产生错误FormatException: String '2023年04年01 00:00:00' was not recognized as a valid DateTime., 如图: 日期在按照""yyyy/MM/dd HH:mm:ss""格式化时未被格式化为"2023年05月01", 却变成了"2023年05年01", "/"均被替换成了"年". 使用环境为 .NET 6, WIN10专业版中文环境(非常常见的环境), 未发现特殊影响因素. 测试发现可能是VS或电脑本身因素导致本问题, 如统一采用横杠等格式可以避免此类问题带来的影响, 如"yyyy-MM-dd HH:mm:ss".
DateTime.Parse(theTime.ToString(paramter.startTimeFormat));
FormatException: String '2023年04年01 00:00:00' was not recognized as a valid DateTime.
""yyyy/MM/dd HH:mm:ss""
"2023年05月01"
"2023年05年01"
"yyyy-MM-dd HH:mm:ss"
ShardingContainer
类中采用的日期格式化方式为斜杠分隔, 如"yyyy/MM/dd HH:mm:00"可能在特定环境下在执行
日期在按照![image](https://github.com/Coldairarrow/EFCore.Sharding/assets/93357848/02a80fd1-fba6-41be-a6cb-24f1f1d34e7d)
DateTime.Parse(theTime.ToString(paramter.startTimeFormat));
时产生错误FormatException: String '2023年04年01 00:00:00' was not recognized as a valid DateTime.
, 如图:""yyyy/MM/dd HH:mm:ss""
格式化时未被格式化为"2023年05月01"
, 却变成了"2023年05年01"
, "/"均被替换成了"年". 使用环境为 .NET 6, WIN10专业版中文环境(非常常见的环境), 未发现特殊影响因素.测试发现可能是VS或电脑本身因素导致本问题, 如统一采用横杠等格式可以避免此类问题带来的影响, 如
"yyyy-MM-dd HH:mm:ss"
.