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 ...
随机推荐
- SpringCloud学习笔记(三):Rest微服务构建案例工程模块
需要具备的知识 1 springmvc+mybatis+mysql 2 Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务 3 Maven的分包分模 ...
- 滚动字幕标记<marquee></marquee>
<marquee>滚动内容</marquee> 常用属性: Direction : 滚动方向 取值 up, down left right width :滚动宽度 heigh ...
- 用docker部署zabbix
官方文档 https://www.zabbix.com/documentation/3.4/zh/manual/installation/containers 1 启动一个空的Mysql服务器实例 d ...
- 《DSP using MATLAB》Problem 8.10
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 01-python 学习第一天
今天是学习python语言的第一天,通过中国大学MOOC网的相关课程和其他在线教程,对python 语言有了初步的认识.今天我记住了<人生苦短,Python是岸>这句话.如果有人学习,建议 ...
- 基于baseline、svd和stochastic gradient descent的个性化推荐系统
文章主要介绍的是koren 08年发的论文[1], 2.3部分内容(其余部分会陆续补充上来).koren论文中用到netflix 数据集, 过于大, 在普通的pc机上运行时间很长很长.考虑到写文章目 ...
- C#控件的闪烁问题解决方法总结
最近对代码作了一些优化,试验后效果还可以,但是发现界面会闪烁,具体是TreeView控件会闪烁,语言为C#,IDE为VS2005.在查阅一些资料,使用了一些基本技术后(如开启双缓冲),发现没什么效果. ...
- .net 设置默认首页
解决方案一:设置默认首页 在 Web.config 文件中,加上红色字体间的内容 <configuration> <system.web> <compilation de ...
- Redis高级命令的使用学习
- Leetcode322. Coin Change零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1. 示例 1: 输入: coins = ...