首页 > 试题广场 >

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一

[问答题]
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
推荐
/*输入年月日时分秒,输出年月日时分秒的下一秒,输出仍然在原内存空间*/
void NextMinute(int *nYear, int *nMonth, int *nDate, int *nHour, int *nMinute, int *nSecond)
{
    int nDays;
    (*nSecond)++; // 秒加1
    if (*nSecond >= 60) // 秒满60,做出特殊处理,下面时,日,月等类同
    {
        *nSecond = 0;
        (*nMinute)++;
        if (*nMinute >= 60)
        {
            *nMinute = 0;
            (*nHour)++;
            if (*nHour >= 24)
            {
                *nHour = 0;
                (*nDate)++;
                switch (*nMonth)
                {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    nDays = 31;
                    break;
                case 2:// 判断闰年
                    if (*nYear % 400 == 0 || *nYear % 100 != 0 && *nYear % 4 == 0)
                    {
                        nDays = 29;
                    }
                    else
                    {
                        nDays = 28;
                    }
                    break;
                default:
                    nDays = 30;
                    break;
                }
                if (*nDate > nDays)
                {
                    *nDate = 1;
                    (*nMonth)++;
                    if (*nMonth > 12)
                    {
                        *nMonth = 1;
                        (*nYear)++;
                    }
                }
            }
        }
    }
}
/*示例可运行代码*/
void main()
{
    int nYear = 2004, nMonth = 12, nDate = 31, nHour = 59, nMinute = 59, nSecond = 59;
    NextMinute(&nYear, &nMonth, &nDate, &nHour, &nMinute, &nSecond);
    printf("The result:%d-%d-%d %d:%d:%d", nYear, nMonth, nDate, nHour, nMinute, nSecond);
}

编辑于 2015-02-07 10:43:11 回复(0)
using System;
 
public class Programe
 {
 /// <summary>
 /// 输出时间***后的日期
 /// </summary>
 /// <param name="year"></param>
 /// <param name="month"></param>
 /// <param name="day"></param>
 /// <param name="hour"></param>
 /// <param name="minutes"></param>
 /// <param name="seconds"></param>
 private static void AddOneSecond(int year, int month, int day, int hour, int minutes, int seconds)
 {
 if (year >= 1979 && year <= 2018 && month >= 1 && month <= 12 && day >= 1 && day <= 31 && hour >= 1 && hour <= 24 && minutes >= 0 && minutes <= 59 && seconds >= 0 && seconds <= 59)
 {
 DateTime dateTime = DateTime.MinValue.AddYears(year - 1).AddMonths(month - 1).AddDays(day-1).AddHours(hour).AddMinutes(minutes).AddSeconds(seconds + 1);
 Console.WriteLine("***后,时间为"+dateTime);
 }
 else {
 Console.WriteLine("您的输入有误!");
 } 
 }
 /// <summary>
 /// 输入时间
 /// </summary>
 /// <param name="args"></param>
 public static void Main(string[] args)
 {
 Console.Write("请依次输入年(1979~2018)、月(1~12)、日(1~31)、时(1~24)、分(0~59)、秒(0~59):");
 
 int year = int.Parse(Console.ReadLine());
 int month = int.Parse(Console.ReadLine());
 int day = int.Parse(Console.ReadLine());
 int hour = int.Parse(Console.ReadLine());
 int minutes = int.Parse(Console.ReadLine());
 int seconds = int.Parse(Console.ReadLine());
 Console.WriteLine("您输入的时间为{0}年{1}月{2}日,{3}:{4}:{5}",year,month,day,hour,minutes,seconds);
 AddOneSecond(year,month,day,hour,minutes,seconds);
 Console.ReadKey();
 }
 }
 


编辑于 2018-07-21 19:45:05 回复(0)
package cn.zrq.test.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * @Author: zrq
 * @Date: 2019/11/28 13:20
 * @Description:编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
 */
public class DateTest {

    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入日期(格式为:yyyyMMddHHmmss):");
        while (scanner.hasNext()){
            String next = scanner.next();
            if("quit".equals(next)){
                System.out.println("bye!");
                break;
            }
            SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMMddHHmmss");
            try {
                Date date = simpleDateFormat.parse(next);
                Date resultDate = DateTest.addOneSeconds(date);
                System.out.println("结果是:"+simpleDateFormat.format(resultDate));
            } catch (ParseException e) {
                System.out.println("格式有误,请重新输入日期(格式为:yyyyMMddHHmmss):");
            }

        }
    }

    public static Date addOneSeconds(Date date){
        return new Date(date.getTime()+1000l);
    }
}


发表于 2019-11-28 13:44:43 回复(0)
public static void main(String[] args) throws ParseException {
        String str="2004年12月31日23时59分59秒";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
        Date parse = sdf.parse(str);
        System.out.println(parse.toLocaleString());
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(parse);
        calendar.add(Calendar.SECOND,1);
        String format = sdf.format(calendar.getTime());
        System.out.println(format);
    }
输出结果:
2004-12-31 23:59:59
2005年01月01日00时00分00秒

编辑于 2019-09-02 18:26:16 回复(0)
String srcDate="2004年12月31日23时59分59秒";  
SimpleDateFormat sdf = newSimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
 Long mil = sdf.parse(srcDate).getTime(); 
Calendar ca = newGregorianCalendar(); 
 mil=mil+1000;
 ca.setTimeInMillis(mil); 
String time = sdf.format(ca.getTime()); 
仿照楼上,把日期变为毫秒,给毫秒加1000,再把毫秒变为日期
发表于 2015-07-08 21:45:44 回复(0)
import java.text.*;
import java.util.*;

class DateCalc {
 public static void main(String[] args) throws Exception {
 String srcDate="2004年12月31日23时59分59秒";
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
 Date date = sdf.parse(srcDate);
 Calendar calendar = Calendar.getInstance();
 calendar.setTime(date);
 calendar.add(Calendar.SECOND,1);
 System.out.println(sdf.format(calendar.getTime()));
 }
}

编辑于 2015-02-09 18:08:44 回复(0)