C# 将10位儒略日期转换为日期时间
我尝试用以下代码转换sql server数据库中的int字段1368463365C# 将10位儒略日期转换为日期时间,c#,C#,我尝试用以下代码转换sql server数据库中的int字段1368463365 public static DateTime JulianToDateTime(int julianDate) { int RealJulian = julianDate + 1900000; int year = Convert.ToInt32(RealJulian.ToString().Substring(0, 4)); int DoY = Convert.ToInt32(RealJul
public static DateTime JulianToDateTime(int julianDate)
{
int RealJulian = julianDate + 1900000;
int year = Convert.ToInt32(RealJulian.ToString().Substring(0, 4));
int DoY = Convert.ToInt32(RealJulian.ToString().Substring(4));
DateTime d = new DateTime(year, 1, 1);
return d.AddDays(DoY - 1);
}
您的输入不是朱利安日期。这是一个时间戳。1368463365指2013年5月13日星期一格林尼治标准时间16:42:45 您可以使用以下方法从时间戳获取日期时间:
public static DateTime UnixTimeStampToDateTime( int unixTimeStamp )
{
// Unix timestamp is seconds past epoch
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0);
dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
return dtDateTime;
}
数字1368463365是,它是自1970年1月1日以来的秒数。在这种情况下,您需要做的就是将这个时间戳添加到DateTime,表示日期1/1/1970 00:00:00
另一个SO问题的示例代码:
public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
// Unix timestamp is seconds past epoch
System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0);
dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
return dtDateTime;
}
查阅参考资料
顺便说一句,这里有一点错误,但是如果你想检查这个时间戳代表的日期,你可以在线检查它。看起来你有一个Unix时间戳。1368463365的数值相当于2013年5月13日格林尼治标准时间16:42:45 Unix时间戳只是自1970年1月1日午夜UTC/GMT以来的秒数。因此,您可以将其转换为如下常规日期时间:
public static DateTime UnixTimeToDateTime(long timestamp)
{
var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds((double)timestamp);
dateTime = dateTime.ToLocalTime(); // Change GMT time to your timezone
return dateTime;
}
改编自。用法:
在我的荷兰计算机上的结果(UTC+2):
13-5-2013 18:42:45
据我所知,朱利安约会可能意味着
自公元前4713年1月1日至儒略历UTC中午12:00:00的天数,即公历公元前4714年11月24日。今天2014年2月18日至少有一部分时间是JD 2456706
一年中的第几天(如2013年12月31日)是2013365;2012年12月31日为2012366
这些都不是10位数字。要转换成/转换成前者,请查看您的工作税美元…或至少是我的工作税美元
与序号日期表单的转换应该非常明显:
string julianDate = "2014323" ; // the 323rd day of 2014
int year = int.Parse( julianDate.substring(0,4) ) ;
int ordinalDayNumber = int.Parse( julianDate.substring(4,3) ) ;
DateTime dt = new DateTime(year,1,1).AddDays( ordinalDayNumber - 1 ) ;
unix时间是自UTC 1970年1月1日午夜以来的秒数
DateTime UnixTimeToDateTime(int timestamp)
{
return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(timestamp);
}
在这里定义朱利安日期。您所指的似乎是自1900年以来的混合数字的文本表示形式,而不是。显示示例输入和预期输出,或更准确地描述您的问题。可能重复的作品,如charm+1
DateTime UnixTimeToDateTime(int timestamp)
{
return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(timestamp);
}