Java:处理时间表达式
我使用Java后端来存储不同的事件。截止日期用于存储特定于日期和时间的信息。最好允许“更自然”的时间定义,如“下午”、“上午”或“很快”Java:处理时间表达式,java,types,type-conversion,Java,Types,Type Conversion,我使用Java后端来存储不同的事件。截止日期用于存储特定于日期和时间的信息。最好允许“更自然”的时间定义,如“下午”、“上午”或“很快” 是否有最佳实践来处理这些灵活/没有很好地指定但经常使用的时间说明符?是否有一些库可以将它们转换为日期对象(反之亦然)?这取决于您要为这些对象设置的时间,但下面是一个示例: import java.util.*; import java.text.*; public class currentTime { public static void main(St
是否有最佳实践来处理这些灵活/没有很好地指定但经常使用的时间说明符?是否有一些库可以将它们转换为日期对象(反之亦然)?这取决于您要为这些对象设置的时间,但下面是一个示例:
import java.util.*;
import java.text.*;
public class currentTime
{ public static void main(String[] args)
{ currentTime a_SmartHello=new currentTime();
GregorianCalendar todaysDate=new GregorianCalendar();
int hour,
minute,
hour_of_day,
am_pm;
hour=todaysDate.get(Calendar.HOUR);
hour_of_day=todaysDate.get(Calendar.HOUR_OF_DAY);
minute=todaysDate.get(Calendar.MINUTE);
am_pm=todaysDate.get(Calendar.AM_PM);
a_SmartHello.sayTime(hour,minute,am_pm);
if (hour_of_day<12)
{ a_SmartHello.sayGoodMorning();
}
if (hour_of_day>11 && hour_of_day<17)
{ a_SmartHello.sayGoodAfternoon();
}
if (hour_of_day>=17 && hour_of_day<22)
a_SmartHello.sayGoodEvening();
if (hour_of_day>=22)
a_SmartHello.sayGoodNight();
}
private void sayGoodMorning()
{ System.out.println("Good Morning World!");
}
private void sayGoodAfternoon()
{ System.out.println("Good Afternoon World!");
}
private void sayGoodEvening()
{ System.out.println("Good Evening World!");
}
private void sayGoodNight()
{ System.out.println("Good Night World! I'm going to bed!!!!");
}
private void sayTime(int hour, int minute, int am_pm)
{ NumberFormat minFormat=NumberFormat.getNumberInstance();
minFormat.setMinimumIntegerDigits(2);
String am_pm_string;
if (am_pm==0)
{ am_pm_string="AM";
}
else
{ am_pm_string="PM";
}
System.out.println("The time is - "+hour+":"+minFormat.format(minute)+am_pm_string);
}
}
import java.util.*;
导入java.text.*;
公共类当前时间
{公共静态void main(字符串[]args)
{currentTime a_SmartHello=new currentTime();
GregorianCalendar todaysDate=新的GregorianCalendar();
整小时,
分钟,
每天的小时,
上午及下午,;
小时=今天。获取(日历。小时);
hour_of_day=todaysDate.get(Calendar.hour_of_day);
分钟=todaysDate.get(Calendar.minute);
am\u pm=todaysDate.get(Calendar.am\u pm);
a_SmartHello.sayTime(小时、分钟、上午/下午);
如果(第11天的小时和第17天的小时和第22天的小时)
你好,晚安;
}
二等兵早上好
{System.out.println(“早安世界!”);
}
二等兵下午好
{System.out.println(“午安世界!”);
}
二等兵:晚安
{System.out.println(“晚安世界!”);
}
二等兵:晚安
{System.out.println(“晚安,世界!我要睡觉了!!”);
}
私人时间(整小时、整分钟、整上午/下午)
{NumberFormat minFormat=NumberFormat.getNumberInstance();
minFormat.setMinimumIntegerDigits(2);
字符串am_pm_字符串;
如果(am_pm==0)
{am_pm_string=“am”;
}
其他的
{am_pm_string=“pm”;
}
System.out.println(“时间是-”+hour+:“+minFormat.format(分钟)+am\u pm\u字符串);
}
}
从用手做怎么样。只需创建一个包装器类,并使用值午后、上午等创建一个枚举。。。并提供一个构造函数,该构造函数接受日期对象并根据需要对逻辑进行编码
Class DateWrapper {
private Date date;
private DayTime dayTime;
public DateWrapper (Date date){
...
}
public enum DayTime {
Morning, AfterNoon, ...;
}
}
你必须定义你的时间定义是什么意思。例如,下午在下午1点到4点之间;上午8点到11点之间;很快就要到3个小时了。定义好单词后,您可以自己编写转换。好的,这是显而易见的。但是有什么标准或库吗?我认为这是一项相当普遍的任务!不,不太明显。一个应用程序需要将早晨定义为凌晨4点到早上7点,而另一个应用程序(针对青少年)需要将早晨定义为下午1点到下午4点。它依赖于应用程序。