将 DateTime 压缩成字符串的最佳方法?
Best way to compress a DateTime into a string?
我正在将一个 DateTime
值存储到一个字符串中,以便与其他数据一起存储在数据库中。 我知道这不是存储 DateTime
的最佳方式。话虽如此,我还是想尽可能少占用字符来存储。
我现在存储为yyyyMMddHHmm
格式,占用12个字符。我不在乎秒数。是否可以在不丢失数据的情况下进一步减少存储此元素的字符数?
您可以使用 六个 个字符,方法非常简单:
string logTime = "202103011927";
char[] code = new char[5];
for (int i = 0; i < 5; i++)
{
code[i] = (char)(32 + int.Parse(logTime.Substring(2 + 2 * i, 2)));
}
string display = new string(code);
Console.WriteLine(display);
char[] chars = display.ToCharArray();
StringBuilder decode = new StringBuilder("20");
for (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
的最佳方式。话虽如此,我还是想尽可能少占用字符来存储。
我现在存储为yyyyMMddHHmm
格式,占用12个字符。我不在乎秒数。是否可以在不丢失数据的情况下进一步减少存储此元素的字符数?
您可以使用 六个 个字符,方法非常简单:
string logTime = "202103011927";
char[] code = new char[5];
for (int i = 0; i < 5; i++)
{
code[i] = (char)(32 + int.Parse(logTime.Substring(2 + 2 * i, 2)));
}
string display = new string(code);
Console.WriteLine(display);
char[] chars = display.ToCharArray();
StringBuilder decode = new StringBuilder("20");
for (int i = 0; i < 5; i++)
{
decode.Append(Convert.ToInt32((Convert.ToByte(chars[i]) - 32)).ToString("00"));
}
Console.WriteLine(decode.ToString());
// 5#!3;
// 202103011927