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的更多相关文章

  1. javascript Date format(js日期格式化) (转)

    方法一:这个很不错,好像是 csdn 的 Meizz 写的: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) ...

  2. [转]javascript Date format(js日期格式化)

    方法一:这个很不错,好像是 csdn 的 Meizz 写的: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q)  ...

  3. javascript Date format(js日期格式化)

    这个用这比较爽,记录一下// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年( ...

  4. [荐]javascript Date format(js日期格式化)

    cnblog:http://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html 方法一: // 对Date的扩展,将 Date  ...

  5. JS Date.Format

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...

  6. Javascript Date Format

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...

  7. Date Format, 时间戳格式化

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...

  8. js new Date().Format

    /** * * 对Date的扩展,将 Date 转化为指定格式的String * 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符 * 年(y)可以用 1-4 ...

  9. GG同步sqlserver报错一个案例 Invalid date format

    在里面Oracle表同步sqlserver时间,在sqlserver当应用程序数据的结束.您可能会遇到这个错误. 2014-05-17 17:20:24 WARNING OGG-01154 SQL e ...

随机推荐

  1. C++中无数据成员的类的对象占用内存大小

    结论: 对于没有数据成员的对象,其内存单元也不是0,c++用一个内存单元来表示这个实例对象的存在. 如果有了数据或虚函数(虚析构函数),则相应的内存替代1标记自己的存在. PS:以下代码均在win32 ...

  2. 组件:基础的基础组件(Component,Portlet)

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  3. 数据库备份还原——mysqlbackup与mysqldump对比测试

    1      环境描述 1.1      硬件环境 服务器类型:华为RH5885 IP: 10.148.128.100 内存: 64G 物理CPU个数:4 CPU核数:8 逻辑CPU个数:64 Int ...

  4. day70test

    day_70: #api / urls: from django.conf.urls import url from . import views urlpatterns = [ url(r'^car ...

  5. VC:不支持尝试执行的操作

    问题描述: 基于CDialogEx的对话框工程.VS2010开发环境. 调试运行到OnInitDialog()的CDialogEx::OnInitDialog()方法的时候弹出提示窗口"不支 ...

  6. springMVC和springBoot区别

    Spring MVC是什么?(1)Spring MVC是Spring提供的一个强大而灵活的模块式web框架.通过Dispatcher Servlet, ModelAndView 和 View Reso ...

  7. 附录C 准备NCDC气象数据(加解释)

    附录C 准备NCDC气象数据 这里首先简要介绍如何准备原始气象数据文件,以便我们能用Hadoop对它们进行分析.如果打算得到一份数据副本供Hadoop处理,可按照本书配套网站(网址为http://ww ...

  8. mapreduce.Job: Running job: job_1553100392548_0001

    这几天一直在尝试一个mapreduce的例子,但是一直都是卡在mapreduce.Job: Running job: job_1553100392548_0001,查看日志也不报错,查看每个配置文件没 ...

  9. 2019-2019-2-20175332-实验三《敏捷开发与XP实践》实验报告

    一.编码标准 题目要求: 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 实验步骤 1.安装ali ...

  10. HBase 三维模型解析

    总结下一直想写hbase的实践经验,在用hbase的过程中,我们都知道,rowkey设计的好坏,是我们能最大发挥hbase的架构优势,也是我们是否正确理解hbase的一个关键点.闲话少说,进入正题. ...