Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:处理时间表达式_Java_Types_Type Conversion - Fatal编程技术网

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

我使用Java后端来存储不同的事件。截止日期用于存储特定于日期和时间的信息。最好允许“更自然”的时间定义,如“下午”、“上午”或“很快”


是否有最佳实践来处理这些灵活/没有很好地指定但经常使用的时间说明符?是否有一些库可以将它们转换为日期对象(反之亦然)?

这取决于您要为这些对象设置的时间,但下面是一个示例:

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点。它依赖于应用程序。