分解12/29/2009 输出:29th Dec 2009

本文介绍了一个简单的Java程序,该程序能够将一系列短日期格式(月/日/年)的数据转换为更易读的形式,包括全称月份、特定日期序数(如1st、2nd等)及完整年份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class date{
 public static void main(String[] args){
  int i=0;
  int j=0;
  String daya = "";//存储天
  String month ="";//存储月
  String year ="";//存储年
  String[] dates = {"07/01/07","09/09/09","07/27/99","12/30/89"};
  
  for(i=0;i<dates.length;i++){

   System.out.println("<----第"+(i+1)+"组---->");
   System.out.println("dates["+i+"]"+dates[i]);
  String[] day = dates[i].split("[/]");
  for (j=0;j<day.length;j++){
  System.out.println("day["+j+"]"+day[j]);
  
  }
  
  //day[0]为月份,将其转换为对应的月份
  if (Integer.parseInt(day[0])<=12 && Integer.parseInt(day[0])>0){//Integer.parseInt(string s)将s强制转换为数字
         String[] months={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
         month = months[Integer.parseInt(day[0])-1];
         System.out.print(month+"  ");
   }
  
  //day[1]为天,将其转换为对应的天,其中一号二号三号为1st,2nd,3rd,其余加st
  if (Integer.parseInt(day[1])<31 && Integer.parseInt(day[1])>=3){
   
   daya = day[1]+"th";
   
  }else{
   if(Integer.parseInt(day[1])==1){daya="1st";}else{
    if(Integer.parseInt(day[1])==2){daya="2nd";}else{
     if(Integer.parseInt(day[1])==3){daya="3rd";}
    }
   
    }
   }
  System.out.print(daya+"  ");
  
  //day[2]为年,将其转换为2009,1999,如果day[2]<10,则输出200day[2],若day[2]>90,则输出19day[2]
  if(Integer.parseInt(day[2])>80 && Integer.parseInt(day[2])<100){
   year = "19"+day[2];
  }else{
   if(Integer.parseInt(day[2])<10 && Integer.parseInt(day[2])>=0){
    year = "20"+day[2];
   }
  }
  
  System.out.println(year+"  ");
  System.out.println(daya+" "+month+" "+year);
  
  }  
 }
}

 

运行结果:

<----第1组---->
dates[0]07/01/07
day[0]07
day[1]01
day[2]07
Jul  1st  2007 
1st Jul 2007
<----第2组---->
dates[1]09/09/09
day[0]09
day[1]09
day[2]09
Sep  09th  2009 
09th Sep 2009
<----第3组---->
dates[2]07/27/99
day[0]07
day[1]27
day[2]99
Jul  27th  1999 
27th Jul 1999
<----第4组---->
dates[3]12/30/89
day[0]12
day[1]30
day[2]89
Dec  30th  1989 
30th Dec 1989

#include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int // 定义数码管段码表(共阳极数码管) code uchar seg_table[] = { 0xC0, 0xF9, 0xA4, 0xB0, // 0-3 0x99, 0x92, 0x82, 0xF8, // 4-7 0x80, 0x90, 0x88, 0x83, // 8-9,A-B 0xC6, 0xA1, 0x86, 0x8E // C-D-E-F }; // 定义按键端口 sbit KEY_MODE = P3^2; // 模式切换键 sbit KEY_INC = P3^3; // 增加键 sbit KEY_DEC = P3^4; // 减少键 sbit KEY_CTRL = P3^5; // 控制键(暂停/启动/清零) // 定义全局变量 uchar hour = 23; // 小时 uchar minute = 59; // 分钟 uchar second = 50; // 秒 uchar mode = 0; // 模式:0-正常显示,1-调时,2-调分,3-调秒 uchar flash_flag = 0; // 闪烁标志 uchar run_flag = 1; // 运行标志:1-运行,0-暂停 uint count = 0; // 定时器计数 // 函数声明 void Delay_ms(uint ms); void Display_Time(void); void Key_Scan(void); void Timer0_Init(void); // 延时函数 void Delay_ms(uint ms) { uint i, j; for(i = 0; i < ms; i++) for(j = 0; j < 123; j++); } // 数码管显示函数 void Display_Time(void) { uchar hour_h, hour_l, min_h, min_l, sec_h, sec_l; // 分解时间数据 hour_h = hour / 10; hour_l = hour % 10; min_h = minute / 10; min_l = minute % 10; sec_h = second / 10; sec_l = second % 10; // 显示小时十位 P2 = 0x01; // 位选(共阳极数码管位选为低电平有效) if(mode != 1 || flash_flag) P0 = seg_table[hour_h]; else P0 = 0xFF; // 熄灭(共阳极数码管全高电平熄灭) Delay_ms(2); // 显示小时个位 P2 = 0x02; // 位选 if(mode != 1 || flash_flag) P0 = seg_table[hour_l]; else P0 = 0xFF; // 熄灭 Delay_ms(2); // 显示'-' P2 = 0x04; // 位选 if(mode == 0 && flash_flag) P0 = 0xBF; // '-'(共阳极数码管段码) else if(mode != 0) P0 = 0xBF; // '-' else P0 = 0xFF; // 熄灭 Delay_ms(2); // 显示分钟十位 P2 = 0x08; // 位选 if(mode != 2 || flash_flag) P0 = seg_table[min_h]; else P0 = 0xFF; // 熄灭 Delay_ms(2); // 显示分钟个位 P2 = 0x10; // 位选 if(mode != 2 || flash_flag) P0 = seg_table[min_l]; else P0 = 0xFF; // 熄灭 Delay_ms(2); // 显示'-' P2 = 0x20; // 位选 if(mode == 0 && flash_flag) P0 = 0xBF; // '-' else if(mode != 0) P0 = 0xBF; // '-' else P0 = 0xFF; // 熄灭 Delay_ms(2); // 显示秒十位 P2 = 0x40; // 位选 if(mode != 3 || flash_flag) P0 = seg_table[sec_h]; else P0 = 0xFF; // 熄灭 Delay_ms(2); // 显示秒个位 P2 = 0x80; // 位选 if(mode != 3 || flash_flag) P0 = seg_table[sec_l]; else P0 = 0xFF; // 熄灭 Delay_ms(2); } // 按键扫描函数 void Key_Scan(void) { static uchar key_mode_state = 0; static uchar key_inc_state = 0; static uchar key_dec_state = 0; static uchar key_ctrl_state = 0; // 模式切换键检测 if(KEY_MODE == 0) { Delay_ms(10); // 消抖 if(KEY_MODE == 0 && key_mode_state == 0) { key_mode_state = 1; mode = (mode + 1) % 4; // 循环切换模式:0->1->2->3->0 } } else { key_mode_state = 0; } // 增加键检测 if(KEY_INC == 0) { Delay_ms(10); // 消抖 if(KEY_INC == 0 && key_inc_state == 0) { key_inc_state = 1; switch(mode) { case 1: hour = (hour + 1) % 24; break; // 调时 case 2: minute = (minute + 1) % 60; break; // 调分 case 3: second = (second + 1) % 60; break; // 调秒 } } } else { key_inc_state = 0; } // 减少键检测 if(KEY_DEC == 0) { Delay_ms(10); // 消抖 if(KEY_DEC == 0 && key_dec_state == 0) { key_dec_state = 1; switch(mode) { case 1: hour = (hour + 23) % 24; break; // 调时 case 2: minute = (minute + 59) % 60; break; // 调分 case 3: second = (second + 59) % 60; break; // 调秒 } } } else { key_dec_state = 0; } // 控制键检测(暂停/启动/清零) if(KEY_CTRL == 0) { Delay_ms(10); // 消抖 if(KEY_CTRL == 0 && key_ctrl_state == 0) { key_ctrl_state = 1; if(mode == 0) { // 只有在正常显示模式下才能控制计时 if(run_flag == 1) { run_flag = 0; // 暂停计时 } else { run_flag = 1; // 恢复计时 } } else { // 在设置模式下按控制键清零 hour = 0; minute = 0; second = 0; } } } else { key_ctrl_state = 0; } } // 定时器0初始化函数 void Timer0_Init(void) { TMOD |= 0x01; // 设置定时器0为模式1(16位定时器) TH0 = 0xFC; // 定时初值高8位,定时1ms TL0 = 0x66; // 定时初值低8位 ET0 = 1; // 使能定时器0中断 EA = 1; // 开总中断 TR0 = 1; // 启动定时器0 } // 定时器0中断服务函数 void Timer0_ISR(void) interrupt 1 { TH0 = 0xFC; // 重新加载初值 TL0 = 0x66; count++; if(count >= 500) { // 500ms count = 0; flash_flag = !flash_flag; // 闪烁标志取反 if(run_flag && mode == 0) { // 只有在运行且正常显示模式下才计时 second++; if(second >= 60) { second = 0; minute++; if(minute >= 60) { minute = 0; hour++; if(hour >= 24) { hour = 0; } } } } } } // 主函数 void main(void) { Timer0_Init(); // 初始化定时器0 while(1) { Display_Time(); // 显示时间 Key_Scan(); // 扫描按键 } }该代码如何连接
最新发布
06-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值