Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将日期时间压缩为字符串的最佳方法?_C#_Datetime_Compression - Fatal编程技术网

C# 将日期时间压缩为字符串的最佳方法?

C# 将日期时间压缩为字符串的最佳方法?,c#,datetime,compression,C#,Datetime,Compression,我将一个DateTime值存储到一个字符串中,与其他数据一起存储在数据库中。我知道这不是存储DateTime的最佳方式。话虽如此,我希望在存储它的同时尽可能少地占用字符 现在我以yyyyMMddHHmm格式存储它,占用12个字符。我不在乎秒数。是否可以在不丢失数据的情况下进一步减少存储此元素的字符数?您可以使用非常简单的方法使用六个字符: string logTime=“202103011927”; 字符[]代码=新字符[5]; 对于(int i=0;i

我将一个
DateTime
值存储到一个字符串中,与其他数据一起存储在数据库中。我知道这不是存储
DateTime
的最佳方式。话虽如此,我希望在存储它的同时尽可能少地占用字符


现在我以
yyyyMMddHHmm
格式存储它,占用12个字符。我不在乎秒数。是否可以在不丢失数据的情况下进一步减少存储此元素的字符数?

您可以使用非常简单的方法使用六个字符:

string logTime=“202103011927”;
字符[]代码=新字符[5];
对于(int i=0;i<5;i++)
{
代码[i]=(char)(32+int.Parse(logTime.Substring(2+2*i,2));
}
字符串显示=新字符串(代码);
控制台写入线(显示);
char[]chars=display.ToCharArray();
StringBuilder解码=新StringBuilder(“20”);
对于(int i=0;i<5;i++)
{
decode.Append(Convert.ToInt32((Convert.ToByte(chars[i])-32)).ToString(“00”);
}
Console.WriteLine(decode.ToString());
// 5#!3.
// 202103011927

可能吗?对经过大量努力:值得推荐:绝对不是,除了实验和教育。但主要的问题是:如果你知道将日期时间存储为字符串是一个愚蠢的想法,那你为什么还要这么做呢?(另外:除了datetime之外,存储datetime的最佳方法是保存一个数字unix时间戳)您可以进行一些位打包(例如,只需要5位来存储小时),然后可能会再次对其进行base64编码以进行安全存储(哪种排序规则?)。但是为什么呢?知道你必须一遍又一遍地(读写)计算,并且不能对日期进行任何数学运算(不是说使用字符串很简单),什么会减少几个字节的增益,你不能通过查询数据库来轻松地解释数据?我保存DateTime只是为了在游戏日志中可视化(有点像是在基于回合的游戏中聊天)。这只是为了可视化,没有别的,所以我不关心第二精度。是的,节省几个字节可能不会对带宽产生任何影响,但我也从实验的角度对此感兴趣。可能不是最基本的,也可以用一种更聪明的方式来做,但无论如何我都感兴趣。存储一个
DateTime
。无需压缩。不需要转换。简单得多。绝对聪明这是一种创造性的方法,它似乎保持在可打印的ASCII兼容字符内。