将Epoch时间转换为日期的好方法是什么,但使用特定的时区
我需要检查两个日期。我在数据库中有一个日期,在x网站上有另一个日期。
我知道两个日期与yyyy-MM-dd
完全相同 例如:
数据库日期为: 1398891600 = 2014-05-01
X网站日期为: 1398902400000 = 2014-05-01
C#代码"转换器"
private string DateChecker_inEPOCH(string epochdate)
{
if (epochdate.Length < 13)
{
epochdate = epochdate + "000";
}
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(Convert.ToDouble(epochdate));
string dateFormated = dt.ToString("yyyy-MM-dd");
return dateFormated;
}
问题是当我使用我的方法转换时,一个db日期是2014-04-30,网站日期是2014-05-01。
测试了日期答案 0 :(得分:4)
数据库日期是:1398891600 = 2014-05-01
X网站日期:1398902400000 = 2014-05-01
EpochConverter.com给了我以下结果:
1398891600000 - &gt; 2014年4月30日星期三21:00:00 GMT
1398902400000 - &gt; 2014年5月1日星期四00:00:00 GMT
所以你的代码似乎与EpochConverter.com一致。
关于时区,我会确保使用UTC存储/检索所有日期。当转换到不同的时区时,这将为您节省很多麻烦。在这种情况下,假设相对于UTC日期存储了纪元,您只需执行以下操作:
#include <iostream>
const int size = 3;
template<class T>
class vector
{
T* v;
public:
vector()
{
v = new T[size];
for (int i = 0; i < size; i++){
v[i] = 0;
}
}
vector(const T* a)
{
for (int i = 0; i < size; i++){
v[i] = a[i];
}
}
T operator * (const vector& y)
{
T sum = 0;
for (int i = 0; i < size; i++){
sum += this->v[i] * y.v[i];
}
return sum;
}
};
int main()
{
int x[3] = { 1, 2, 3 };
int y[3] = { 4, 5, 6 };
vector<int> v1;
vector<int> v2;
v1 = x;
v2 = y;
int R = v1 * v2;
std::cout << R;
return 0;
}
如果您需要向最终用户显示本地时间,则可以使用以下内容:
DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToDouble(epochdate));