Calendar to julian date format
1.JULIAN DATE 定义
2.示例:
定义枚举:
public enum JulianDateType
{
/// <summary>
/// Julian Date (JD)
/// </summary>
JD,
/// <summary>
/// Julian Day Number (JDN)
/// </summary>
JDN,
/// <summary>
/// Chronological JD (CJD)
/// </summary>
CJD,
/// <summary>
/// Reduced JD (RJD)
/// </summary>
RJD,
/// <summary>
/// Modified JD (MJD)
/// </summary>
MJD,
/// <summary>
/// Truncated JD (TJD)
/// </summary>
TJD,
/// <summary>
/// Dublin JD (DJD)
/// </summary>
DJD,
/// <summary>
/// Lilian Date
/// </summary>
LD,
/// <summary>
/// Military Julian Date(yddd)
/// </summary>
JDD,
/// <summary>
/// Ordinal date
/// </summary>
OD
}
2.转换方法
private static Dictionary<string, int> offsetdictionary = new Dictionary<string, int>()
{
{"GMT-12:00",-720},{"GMT-11:00",-660},{"GMT-10:00",-600},{"GMT-09:30",-570},{"GMT-09:00",-540},{"GMT-08:00",-480},
{"GMT-07:00",-420},{"GMT-06:00",-360},{"GMT-05:00",-300},{"GMT-04:30",-270},{"GMT-04:00",-240},{"GMT-03:30",-210},
{"GMT-03:00",-180},{"GMT-02:00",-120},{"GMT-01:00",-60},{"GMT-00:00",0},{"GMT+01:00",60},{"GMT+02:00",120},
{"GMT+03:00",180},{"GMT+03:30",210},{"GMT+04:00",240},{"GMT+04:30",270},{"GMT+05:00",300},{"GMT+05:30",330},
{"GMT+05:45",345},{"GMT+06:00",360},{"GMT+06:30",390},{"GMT+07:00",420},{"GMT+08:00",480},{"GMT+09:00",540},
{"GMT+09:30",570},{"GMT+10:00",600},{"GMT+10:30",630},{"GMT+11:00",660},{"GMT+11:30",690},{"GMT+12:00",720},
{"GMT+12:45",765},{"GMT+13:00",780},{"GMT+14:00",840}
};
/// <summary>
/// Calendar to julian date format
/// </summary>
/// <param name="_year">year size 4</param>
/// <param name="_month">month size 2</param>
/// <param name="_day">day szie 2</param>
/// <param name="_hours"> hours szie 2</param>
/// <param name="_minutes">minutes size 2</param>
/// <param name="_seconds">seconds size 2</param>
/// <param name="jdtype">enum JulianDateType</param>
/// <returns>convert julian date value</returns>
public static string CalendarDateToJD(int _year, int _month, int _day, int _hours, int _minutes, int _seconds, JulianDateType jdtype)
{
string calendarstring = "";
decimal jddate = 0;
int dayN = 0, feb = 0;
int cur_offset = offsetdictionary["GMT+08:00"];
//验证是否为空
if (((_year % 4) == 0 && (_year % 100) != 0) || (_year % 400) == 0)
{
// leap year
if ((_month == 2) && (_day > 29))
{
//Msg:"Leap year: February cannot have more than 29 days.
return "Leap year: February cannot have more than 29 days";
}
feb = 29;
}
else
{
// nonleap year
if ((_month == 2) && (_day > 28))
{
return "February cannot have more than 28 days.";
}
feb = 28;
}
if (((_month == 4) || (_month == 6) || (_month == 9) || (_month == 11)) && (_day > 30))
{
return "This month cannot have more than 30 days.";
}
for (var i = 1; i < _month; i++)
{
if ((i == 4) || (i == 6) || (i == 9) || (i == 11))
{
dayN += 30;
}
else if (i == 2)
{
dayN += feb;
}
else
{
dayN += 31;
}
}
double a = 7 * (_year + (_month + 9) / 12) / 4;
double b = 3 * ((_year + (_month - 9) / 7) / 100 + 1) / 4;
double c = 275 * _month / 9;
jddate = 367 * Convert.ToDecimal(_year) - Convert.ToDecimal(a) - Convert.ToDecimal(b) +
Convert.ToDecimal(c + _day + 1721028.5) + (Convert.ToDecimal(_hours) +
(Convert.ToDecimal(_minutes) / 60) + (Convert.ToDecimal(_seconds) / 3600) - (Convert.ToDecimal(cur_offset) / 60)) / 24;
switch (jdtype)
{
case JulianDateType.JD:
calendarstring = Math.Round(jddate, 7).ToString();
break;
case JulianDateType.JDN:
calendarstring = jddate.ToString().Substring(0, jddate.ToString().IndexOf("."));
break;
case JulianDateType.CJD:
string fraction = "0." + cur_offset;
if (fraction.IndexOf("-") > -1) fraction = "0";
jddate = Math.Round(jddate, 7) + Convert.ToDecimal(0.5) + Convert.ToDecimal(fraction) * 60 / 100;
calendarstring = jddate.ToString();
break;
case JulianDateType.RJD:
jddate = jddate - 2400000;
calendarstring = Math.Round(jddate, 7).ToString();
break;
case JulianDateType.MJD:
jddate = jddate - Convert.ToDecimal(2400000.5);
calendarstring = Math.Round(jddate, 7).ToString();
break;
case JulianDateType.TJD:
decimal intFraction = _hours * 3600 + _minutes * 60 + _seconds;
jddate = jddate - Convert.ToDecimal(2440000.5);
calendarstring = jddate.ToString().Substring(0, jddate.ToString().IndexOf(".")) + "/" + intFraction;
break;
case JulianDateType.DJD:
calendarstring = Math.Round(jddate - 2415020, 7).ToString();
break;
case JulianDateType.LD:
jddate = jddate - Convert.ToDecimal(2299160.5);
calendarstring = jddate.ToString().Substring(0, jddate.ToString().IndexOf("."));
break;
case JulianDateType.JDD:
dayN += _day;
calendarstring = (_year.ToString() + dayN.ToString()).Substring(3);
break;
case JulianDateType.OD:
dayN += _day;
calendarstring = _year.ToString() + dayN.ToString();
break;
}
return calendarstring;
}
Calendar to julian date format的更多相关文章
- javascript Date format(js日期格式化) (转)
方法一:这个很不错,好像是 csdn 的 Meizz 写的: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) ...
- [转]javascript Date format(js日期格式化)
方法一:这个很不错,好像是 csdn 的 Meizz 写的: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) ...
- javascript Date format(js日期格式化)
这个用这比较爽,记录一下// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年( ...
- [荐]javascript Date format(js日期格式化)
cnblog:http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html 方法一: // 对Date的扩展,将 Date ...
- JS Date.Format
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- Javascript Date Format
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- Date Format, 时间戳格式化
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- js new Date().Format
/** * * 对Date的扩展,将 Date 转化为指定格式的String * 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符 * 年(y)可以用 1-4 ...
- GG同步sqlserver报错一个案例 Invalid date format
在里面Oracle表同步sqlserver时间,在sqlserver当应用程序数据的结束.您可能会遇到这个错误. 2014-05-17 17:20:24 WARNING OGG-01154 SQL e ...
随机推荐
- 《DSP using MATLAB》Problem 7.38
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- python 描述器
语法简析 一般来说,描述器(descriptor)是一个有”绑定行为”的对象属性(object attribute),它的属性访问被描述器协议方法重写.这些方法是 __get__(). __set__ ...
- HttpException (0x80004005): 无法连接到 SQL Server 会话数据库
ASP.NET 项目运行时出现错误提示:[HttpException (0x80004005): 无法连接到 SQL Server 会话数据库.] ,后排查问题发现是由于项目的Session模式是使用 ...
- Apache ActiveMQ教程
一.特性及优势 1.实现JMS1.1规范,支持J2EE1.4以上 2.可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM) 3.支持多种语言客户端(j ...
- drools跳转出现错误问题(400)
400 Sorry, a technical error occurred. Please contact a system administrator. 今天drools的管理平台tomcat部署完 ...
- 2018-12-6-Roslyn-如何基于-Microsoft.NET.Sdk-制作源代码包
title author date CreateTime categories Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 lindexi 2018-12-06 16:2 ...
- File- Linux必学的60个命令
1.作用 件内容判断文件类型,使用权限是所有用户. 2.格式 file通过探测文 file [options] 文件名 3.[options]主要参数 -v:在标准输出后显示版本信息,并且退出. -z ...
- Python基本数据类型之字典,集合,range
注: ange()是python的内置函数,用于创建整数的列表,可以生成递增或者递减的数列.ange也是python的内置函数,用于创造xrange对象用于迭代. 在python3中,range() ...
- 19-10-15-Night-E
信心赛??高考赛…… 过程 T1码了暴力+随机化. T2没码完.$Kuku$了 T3写了暴力+ puts("86400\n-1"); 骗了点分. T1 ××你告诉我CF E题是T1 ...
- 机器学习之五 正则化的线性回归-岭回归与Lasso回归
机器学习之五 正则化的线性回归-岭回归与Lasso回归 注:正则化是用来防止过拟合的方法.在最开始学习机器学习的课程时,只是觉得这个方法就像某种魔法一样非常神奇的改变了模型的参数.但是一直也无法对其基 ...