c# - 根据日期和自动递增的数字创建一个唯一的数字

标签 c# .net uniqueidentifier

我需要根据日期生成增量数字。 在前一个日期(比如 2014 年 1 月 6 日)创建的数字不应大于在即将到来的日期(比如 2014 年 1 月 8 日)创建的数字。 如何添加日期? 我尝试了向下的,但在少数情况下失败了

static long num =1;
public long GetUniqueNumberAsPerDate(DateTime date)
{
    string dateStr = date.ToString("yyMMdd");
    long alwaysIncrementeduniqueNum = num + 1;

    return Convert.Int64(dateStr + alwaysIncrementeduniqueNum.ToString());
}

失败案例

通过日期:2014-06-06 数量 : 14 创建号:14060614

通过日期:2013-06-06 人数 : 132 创建的数字:130606132(大于 14060614)

该函数可以被多个应用程序同时调用。所以日期时间(甚至毫秒)可以相同 这个问题的任何解决方案

最佳答案

问题似乎是您的连续编号(总是递增的唯一编号)在 1 到 1000 的范围内变化。当您进行字符串连接时,最终数字将有更少或更多的数字。

你可以这样做

   const long k = 1000000;
   long value = long.Parse(dateStr) * k + alwaysIncrementeduniqueNum; 

假设您每天产生的记录不超过K,这应该可以保证您不会遇到这个问题。

关于c# - 根据日期和自动递增的数字创建一个唯一的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30798326/

相关文章:

c# - 加载预期注册表设置失败时抛出的最合适的 .NET 异常是什么?

c# - Dapper 反序列化 XML

database-design - RethinkDb 中唯一的整数计数器

linux - Bash:检查脚本是否已经在此计算机上运行

c# - 在 C# 中删除返回对象的属性

c# - 从 asp.net 核心应用程序启动 linux 进程失败(找不到文件)

c# - 将 DateTime 转换为 long,反之亦然

c# - 在 .NET Web 应用程序中实现 XML 请求

c# - 使用 C#、XAML 和 MySQL 进行基本身份验证