24小时热门版块排行榜    

查看: 1588  |  回复: 9

szdchris

银虫 (小有名气)

[求助] C++程序怎么实现时间的转换呢?

需要一个简单的程序将现在日期进行转换,比如将2011.8.23设为第一天,那么现在我输入2013.3.26,直接显示第几天,该怎么编写代码呢?求高手指教,谢谢啦
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
csgt0: 金币+2, 谢谢 2013-04-01 11:00:24
都转为Julian day后直接做差即可,给你一个函数,测试过了
CODE:
#include
using namespace std;

// convert Gregorian calendar date to Julian Day Number
float getJulianDay(int year, int month, int day)
{
    int a = (14-month)/12;
    int y = year+4800-a;
    int m = month+12*a-3;
    return (float)day+(float)(153*m+2)/5+365*y+(float)y/4-32083;
}

int main() {
    int y = 2011;
    int m = 8;
    int d1 = 23;
    int d2 = 25;
    cout << getJulianDay(y,m,d2)-getJulianDay(y,m,d1) << endl;
    return 0;
}

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-03-31 21:32:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

szdchris

银虫 (小有名气)


fegg7502: 金币+1, 鼓励交流 2013-04-02 08:55:49
引用回帖:
2楼: Originally posted by libralibra at 2013-03-31 21:32:06
都转为Julian day后直接做差即可,给你一个函数,测试过了
#include <iostream>
using namespace std;

// convert Gregorian calendar date to Julian Day Number
float getJulianDay(int year, int mo ...

你好,很感谢您能回复,但是我运行了,不是我想要的结果,我可能没说明白,就是有个.txt的文档,第一列(除去第一行,第一行是汉字)是累计天数,要的是新建一个.txt文档,转换出的是年月日文档,例如:

数据1.jpg



数据2.jpg

3楼2013-04-01 15:00:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wpacer

铁虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 应助指数+1, 3ks 2013-04-02 08:56:00
VC里有CTimeSpan这个类,直接可以算出来结果的,你可以试试看
朗月茶馆董事馆长
4楼2013-04-01 15:34:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军


fegg7502: 金币+1, 3ks 2013-04-02 08:56:13
引用回帖:
3楼: Originally posted by szdchris at 2013-04-01 15:00:18
你好,很感谢您能回复,但是我运行了,不是我想要的结果,我可能没说明白,就是有个.txt的文档,第一列(除去第一行,第一行是汉字)是累计天数,要的是新建一个.txt文档,转换出的是年月日文档,例如:

数据1.jp ...

再给你一个函数,从julian day number转回公里纪年法的,加测试
CODE:
#include
using namespace std;

// convert Gregorian calendar date to Julian Day Number
float getJulianDay(int year, int month, int day)
{
    int a = (14-month)/12;
    int y = year+4800-a;
    int m = month+12*a-3;
    return (float)day+(float)(153*m+2)/5+365*y+(float)y/4-32083;
}

// convert Julian Day Number to Gregorian date
void GetGregorianDay(float jd, int *year, int *month, int *day)
{
    int y = 4716;
    int j = 1401;
    int m = 2;
    int n = 12;
    int r = 4;
    int p = 1461;
    int v = 3;
    int u = 5;
    int s = 153;
    int w = 2;
    float f = jd+j;
    long e = r*f+v;
    int g = e%p;
    g /= r;
    int h = u*g+w;
    *day = h%s;
    *day /= u;
    *month = (h/s+m)%n;
    *month += 1;
    *year = e/p-y+(n+m-*month)/n;
}

int main() {
    int y = 2011;
    int m = 6;
    int d = 25;
    float j = getJulianDay(y,m,d);
   
    cout << "起始日期:\t2011年06月25日" << endl;
    int num;
    while (cin >> num)
    {
        GetGregorianDay(j+num,&y,&m,&d);
        cout << "间隔 " << num << " 天是:\t" << y << "年" << m << "月" << d << "日" << endl;
    }
    return 0;
}

测试结果
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
5楼2013-04-01 23:29:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

szdchris

银虫 (小有名气)

引用回帖:
5楼: Originally posted by libralibra at 2013-04-01 23:29:03
再给你一个函数,从julian day number转回公里纪年法的,加测试
#include <iostream>
using namespace std;

// convert Gregorian calendar date to Julian Day Number
float getJulianDay(int year, i ...

您好,很感谢你能回复我,最好能做一个界面,它能从一个设置的路径读入txt,类似我上面发的的txt文档,但是txt里有好几列数字,只需要将第一列数字(天数)进行转换(转换为日期),别的不动,经过转换后保存到新的txt文档里,存入另一个路径,本人对C++学的不是很通,想必这对你是小事一桩,愿得你早日回复,在下感激不尽!
6楼2013-04-02 19:27:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
szdchris: 金币+10, ★★★★★最佳答案, 谢谢 2013-04-03 14:09:39
这个问题核心就是2个函数,剩下的就是一些边角问题了,LZ看看书写吧.
大家都很忙啊,还有工作.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
7楼2013-04-02 23:49:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

萧龙眠

银虫 (小有名气)

看了回复我都想笑了
醉倚妙高台上月,玉箫吹彻洞龙眠。
8楼2013-04-03 10:23:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

szdchris

银虫 (小有名气)

引用回帖:
8楼: Originally posted by 萧龙眠 at 2013-04-03 10:23:53
看了回复我都想笑了

有什么资格笑别人,我不懂还不让问了?我能承认我不懂,你也是学计算机的,有那个笑别人的能耐就没有编出来的本事?有本事像楼上一样给个漂亮回复啊
9楼2013-04-03 14:13:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

萧龙眠

银虫 (小有名气)

引用回帖:
9楼: Originally posted by szdchris at 2013-04-03 14:13:05
有什么资格笑别人,我不懂还不让问了?我能承认我不懂,你也是学计算机的,有那个笑别人的能耐就没有编出来的本事?有本事像楼上一样给个漂亮回复啊...

我笑楼主问问题的方式
醉倚妙高台上月,玉箫吹彻洞龙眠。
10楼2013-04-03 14:36:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 szdchris 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0703化学调剂 +11 妮妮ninicgb 2026-03-15 15/750 2026-03-21 19:15 by ColorlessPI
[考研] 材料学硕333求调剂 +3 北道巷 2026-03-18 3/150 2026-03-21 18:17 by 学员8dgXkO
[考研] 313求调剂 +4 肆叁贰壹22 2026-03-19 4/200 2026-03-21 17:33 by ColorlessPI
[考研] 317求调剂 +9 申子申申 2026-03-19 15/750 2026-03-21 17:31 by 学员8dgXkO
[考研] 298求调剂 +4 上岸6666@ 2026-03-20 4/200 2026-03-21 17:14 by 学员8dgXkO
[考研] 083200学硕321分一志愿暨南大学求调剂 +3 innocenceF 2026-03-17 3/150 2026-03-21 02:35 by JourneyLucky
[考研] 求调剂 +3 Ma_xt 2026-03-17 3/150 2026-03-21 02:05 by JourneyLucky
[考研] 085700资源与环境308求调剂 +12 墨墨漠 2026-03-18 13/650 2026-03-21 01:42 by JourneyLucky
[考研] 材料 336 求调剂 +3 An@. 2026-03-18 4/200 2026-03-21 01:39 by JourneyLucky
[考研] 材料专硕英一数二306 +7 z1z2z3879 2026-03-18 7/350 2026-03-20 23:48 by JourneyLucky
[考研] 321求调剂 +9 何润采123 2026-03-18 11/550 2026-03-20 23:19 by JourneyLucky
[考研] 一志愿南京理工大学085701资源与环境302分求调剂 +4 葵梓卫队 2026-03-18 6/300 2026-03-20 23:02 by JourneyLucky
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +4 晨昏线与星海 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[考研] 085410人工智能专硕317求调剂(0854都可以) +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by 不168
[考研] 求调剂 +3 暗涌afhb 2026-03-16 3/150 2026-03-20 00:28 by 河南大学校友
[考研] 0703化学调剂 +5 pupcoco 2026-03-17 8/400 2026-03-19 13:58 by houyaoxu
[考研] 一志愿苏州大学材料工程(085601)专硕有科研经历三项国奖两个实用型专利一项省级立项 +6 大火山小火山 2026-03-16 8/400 2026-03-17 15:05 by 无懈可击111
[考研] 302求调剂 +4 小贾同学123 2026-03-15 8/400 2026-03-17 10:33 by 小贾同学123
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
[考研] 327求调剂 +6 拾光任染 2026-03-15 11/550 2026-03-15 22:47 by 拾光任染
信息提示
请填处理意见