类型转换(day03-13.09.27)

1.String转int

int=Integer.parseInt(String);

2.int转String

String =Integer.toString(int);

3.int[],boolean[],byte[],char[],Double[],float[],long[]转String

转换完成后的字符串带有","号
String =Arrays.toString([]);
要想转化完成后不含有","则不需要以上语句,更换为以下语句,功能:将char[] word转换为字符串:
String name=new String(word)

4.String转int[],boolean[],byte[],char[],Double[],float[],long[]

分个转换:
int[n]=String.charAt(m);
全部转换:
char[]=String.toCharArray();

5.数组copy

System.arraycopy(src, srcPos, dest, destPos, length)
6.字符串转字符串数组:以","为分割线进行分割字符串为字符串数组
String[] s=("a,d,g,j,t").split(",");

7.数组排序

Arrays.sort(m_BluePool);




可以使用Java中的日期时间类和正则表达式来实现这个需求。 首先,我们需要将工作时段字符串按照";"分割成多个工作时段。然后,对于每个工作时段,我们需要将其按照"-"分割成起始时间和结束时间,并将它们转换为Date类型。 接下来,我们可以将传入的指定年月日转换为Calendar类型,并将其设置为当天的起始时间(即当天的00:00:00)。然后,我们可以依次判断该日期是否在每个工作时段内,并计算出该日期在工作时段内的时间。 最后,将每个工作时段内的时间相加,得到该日期在工作时段内工作的总时间。 以下是示例代码: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; public class WorkTimeCalculator { private static final String TIME_PATTERN = "HH:mm"; private static final String WORK_TIME_PATTERN = TIME_PATTERN + "-" + TIME_PATTERN; private static final String WORK_TIME_SEPARATOR = ";"; public static int calculateWorkTime(String workTimeStr, Date startTime, Date endTime, Date date) throws ParseException { // 将工作时段字符串按照";"分割成多个工作时段 String[] workTimeArray = workTimeStr.split(WORK_TIME_SEPARATOR); int totalWorkTime = 0; // 将指定日期转换为Calendar类型,并设置为当天的起始时间 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date startOfDay = calendar.getTime(); // 遍历每个工作时段,并计算该日期在工作时段内的时间 for (String workTime : workTimeArray) { Pattern pattern = Pattern.compile(WORK_TIME_PATTERN); Matcher matcher = pattern.matcher(workTime); if (matcher.matches()) { String startTimeStr = matcher.group(1); String endTimeStr = matcher.group(2); // 将起始时间和结束时间转换为Date类型 SimpleDateFormat sdf = new SimpleDateFormat(TIME_PATTERN); Date startWorkTime = sdf.parse(startTimeStr); Date endWorkTime = sdf.parse(endTimeStr); // 将起始时间和结束时间设置为当天的日期 Calendar startCalendar = Calendar.getInstance(); startCalendar.setTime(startOfDay); startCalendar.set(Calendar.HOUR_OF_DAY, startWorkTime.getHours()); startCalendar.set(Calendar.MINUTE, startWorkTime.getMinutes()); startCalendar.set(Calendar.SECOND, 0); startCalendar.set(Calendar.MILLISECOND, 0); Date start = startCalendar.getTime(); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(startOfDay); endCalendar.set(Calendar.HOUR_OF_DAY, endWorkTime.getHours()); endCalendar.set(Calendar.MINUTE, endWorkTime.getMinutes()); endCalendar.set(Calendar.SECOND, 0); endCalendar.set(Calendar.MILLISECOND, 0); Date end = endCalendar.getTime(); // 判断指定日期是否在该工作时段内,并计算该日期在工作时段内的时间 if (date.after(start) && date.before(end)) { int workTimeInMinutes; if (date.after(startTime) && date.before(endTime)) { // 如果指定日期在工作开始时间和结束时间之间,则计算指定日期在工作时段内的时间 workTimeInMinutes = (int) ((endTime.getTime() - date.getTime()) / (1000 * 60)); } else if (date.before(startTime)) { // 如果指定日期在工作开始时间之前,则计算该工作时段的总时间 workTimeInMinutes = (int) ((end.getTime() - start.getTime()) / (1000 * 60)); } else { // 如果指定日期在工作结束时间之后,则不计算时间 workTimeInMinutes = 0; } totalWorkTime += workTimeInMinutes; } } } return totalWorkTime; } } ``` 使用示例: ```java String workTimeStr = "09:00-12:00;13:00-18:00"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startTime = sdf.parse("2022-01-01 09:30:00"); Date endTime = sdf.parse("2022-01-01 17:30:00"); Date date = sdf.parse("2022-01-01"); int workTime = WorkTimeCalculator.calculateWorkTime(workTimeStr, startTime, endTime, date); System.out.println("Work time on " + sdf.format(date) + " is " + workTime + " minutes"); ``` 输出结果: ``` Work time on 2022-01-01 is 390 minutes ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值