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 ...
随机推荐
- JS和JQuery概括
1. BOM 1. location相关 1. location.href 2. location.href="http://www.sogo.com" 3. location.r ...
- Jqgrid 序号列宽度调整
// 遍历jqgrid 使其序号列宽度为45 function setwidth() { $("table[role='grid']").each(function () {//j ...
- Linux下使用SSH命令行传输文件到远程服务器
目标:CentOS 7 调整 home分区 扩大 root分区 总体过程: 把/home内容备份,然后将/home文件系统所在的逻辑卷删除,扩大/root文件系统,新建/home ,恢复/home内容 ...
- Odoo models.py BaseModel
class BaseModel(object): """ Base class for OpenERP models. OpenERP models are create ...
- Ionic 选择图片上传
1.添加插件 1.1 安装ngcordova 1.2 安装选择图片插件 1.3 安装上传插件 1.4查看安装插件集合 2.html 代码 <div class="item item-i ...
- Java 普通代码块,构造代码块,静态代码块
具体百度... 这里只记下,构造构造代码块在构造函数之前执行,每创建一个对象则执行一次. 静态代码块属于类,而不是对象,只执行一次.
- 从web.xml入手分析jeecms配置文件
web.xml文件是web系统的核心配置文件,里面的所有配置都会加载的运行时的web容器,从她可以了解到整个web项目的配置情况.jeecms的所有配置文件都在config文件夹下面,通过web. ...
- 写一个网页进度loading
作者:jack_lo www.jianshu.com/p/4c93f5bd9861 如有好文章投稿,请点击 → 这里了解详情 loading随处可见,比如一个app经常会有下拉刷新,上拉加载的功能,在 ...
- python实现简单的百度翻译
这段时间,一直在学python,想找点东西实现一下,练手,所以我想通过python代码来实现翻译,话不多说,看吧! 以chrome为例 1 打开百度翻译 https://fanyi.baidu.co ...
- 【DM642】H.264源代码在DM642上的移植
TI公司提供了用于C语言开发的CCS(Code Composer Studio),该平台包括了优化的ANSI编译器,使之可以使用C语言开发DSP程序.这种方法不仅使DSP开发的速度大大加快,而且DSP ...