LocalDateTime工具类:根据当前、周、月、季度、半年、年等维度获取时间&hutool工具包获取农历日期,生肖,传统节日
2023-09-14 09:14:51 时间
1. 简介
Java8提供了全新的日期处理包(java.time.*),根据Java8日期新特性封装日期时间工具类LocalDateTimeUtils。
2. 工具类方法目录
说明 | 方法名称 |
---|---|
当前时间 | LocalDateTimeUtils.now() |
Date 转 LocalDateTime | LocalDateTimeUtils.convert(new Date())); |
LocalDateTime 转 Date | LocalDateTimeUtils.convert(LocalDateTime.now())); |
今天开始时间 | LocalDateTimeUtils.todayStartTime() |
今天结束时间 | LocalDateTimeUtils.todayEndTime() |
昨天开始时间 | LocalDateTimeUtils.yesterdayStartTime() |
昨天结束时间 | LocalDateTimeUtils.yesterdayEndTime() |
最近7天开始时间 | LocalDateTimeUtils.last7DaysStartTime() |
最近7天结束时间 | LocalDateTimeUtils.last7DaysEndTime() |
最近30天开始时间 | LocalDateTimeUtils.last30DaysStartTime() |
最近30天天结束时间 | LocalDateTimeUtils.last30DaysEndTime() |
最近一年开始时间 | LocalDateTimeUtils.last1YearStartTime() |
最近一年结束时间 | LocalDateTimeUtils.last1YearEndTime() |
本周开始时间 | LocalDateTimeUtils.weekStartTime() |
本周结束时间 | LocalDateTimeUtils.weekEndTime() |
本月开始时间 | LocalDateTimeUtils.monthStartTime() |
本月结束时间 | LocalDateTimeUtils.monthEndTime() |
本季度开始时间 | LocalDateTimeUtils.quarterStartTime() |
本季度结束时间 | LocalDateTimeUtils.quarterEndTime() |
本半年开始时间 | LocalDateTimeUtils.halfYearStartTime() |
本半年结束时间 | LocalDateTimeUtils.halfYearEndTime() |
本年开始时间 | LocalDateTimeUtils.yearStartTime() |
本年结束时间 | LocalDateTimeUtils.yearEndTime() |
上周开始时间 | LocalDateTimeUtils.lastWeekStartTime() |
上周结束时间 | LocalDateTimeUtils.lastWeekEndTime() |
上月开始时间 | LocalDateTimeUtils.lastMonthStartTime() |
上月结束时间 | LocalDateTimeUtils.lastMonthEndTime() |
上季度开始时间 | LocalDateTimeUtils.lastQuarterStartTime() |
上季度结束时间 | LocalDateTimeUtils.lastQuarterEndTime() |
上半年开始时间 | LocalDateTimeUtils.lastHalfYearStartTime() |
上半年结束时间 | LocalDateTimeUtils.lastHalfYearEndTime() |
上一年开始时间 | LocalDateTimeUtils.lastYearStartTime() |
上一年结束时间 | LocalDateTimeUtils.lastYearEndTime() |
下周开始时间 | LocalDateTimeUtils.nextWeekStartTime() |
下周结束时间 | LocalDateTimeUtils.nextWeekEndTime() |
下月开始时间 | LocalDateTimeUtils.nextMonthStartTime() |
下月结束时间 | LocalDateTimeUtils.nextMonthEndTime() |
下季度开始时间 | LocalDateTimeUtils.nextQuarterStartTime() |
下季度结束时间 | LocalDateTimeUtils.nextQuarterEndTime() |
下半年开始时间 | LocalDateTimeUtils.nextHalfYearStartTime() |
下半年结束时间 | LocalDateTimeUtils.nextHalfYearEndTime() |
下一年开始时间 | LocalDateTimeUtils.nextYearStartTime() |
下一年结束时间 | LocalDateTimeUtils.nextYearEndTime() |
4. 示例代码#
Copyimport java.time.*;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/**
* LocalDateTime工具类
*
* @author CL
*/
public class LocalDateTimeUtils {
/**
* 当前时间
*
* @return
*/
public static LocalDateTime now() {
return LocalDateTime.now();
}
/**
* Date 转 LocalDateTime
*
* @return
*/
public static LocalDateTime convert(Date date) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
}
/**
* LocalDateTime 转 Date
*
* @return
*/
public static Date convert(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
}
/**
* 今天开始时间
*
* @return
*/
public static LocalDateTime todayStartTime() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
}
/**
* 今天结束时间
*
* @return
*/
public static LocalDateTime todayEndTime() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
}
/**
* 昨天开始时间
*
* @return
*/
public static LocalDateTime yesterdayStartTime() {
return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.DAYS), LocalTime.MIN);
}
/**
* 昨天结束时间
*
* @return
*/
public static LocalDateTime yesterdayEndTime() {
return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.DAYS), LocalTime.MAX);
}
/**
* 最近7天开始时间
*
* @return
*/
public static LocalDateTime last7DaysStartTime() {
return LocalDateTime.of(LocalDate.now().minus(6L, ChronoUnit.DAYS), LocalTime.MIN);
}
/**
* 最近7天结束时间
*
* @return
*/
public static LocalDateTime last7DaysEndTime() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
}
/**
* 最近30天开始时间
*
* @return
*/
public static LocalDateTime last30DaysStartTime() {
return LocalDateTime.of(LocalDate.now().minus(29L, ChronoUnit.DAYS), LocalTime.MIN);
}
/**
* 最近30天结束时间
*
* @return
*/
public static LocalDateTime last30DaysEndTime() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
}
/**
* 最近一年开始时间
*
* @return
*/
public static LocalDateTime last1YearStartTime() {
return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).plus(1L, ChronoUnit.DAYS), LocalTime.MIN);
}
/**
* 最近一年结束时间
*
* @return
*/
public static LocalDateTime last1YearEndTime() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
}
/**
* 本周开始时间
*
* @return
*/
public static LocalDateTime weekStartTime() {
LocalDate now = LocalDate.now();
return LocalDateTime.of(now.minusDays(now.getDayOfWeek().getValue() - 1), LocalTime.MIN);
}
/**
* 本周结束时间
*
* @return
*/
public static LocalDateTime weekEndTime() {
LocalDate now = LocalDate.now();
return LocalDateTime.of(now.plusDays(7 - now.getDayOfWeek().getValue()), LocalTime.MAX);
}
/**
* 本月开始时间
*
* @return
*/
public static LocalDateTime monthStartTime() {
return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
}
/**
* 本月结束时间
*
* @return
*/
public static LocalDateTime monthEndTime() {
return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
}
/**
* 本季度开始时间
*
* @return
*/
public static LocalDateTime quarterStartTime() {
LocalDate now = LocalDate.now();
Month month = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
return LocalDateTime.of(LocalDate.of(now.getYear(), month, 1), LocalTime.MIN);
}
/**
* 本季度结束时间
*
* @return
*/
public static LocalDateTime quarterEndTime() {
LocalDate now = LocalDate.now();
Month month = Month.of(now.getMonth().firstMonthOfQuarter().getValue()).plus(2L);
return LocalDateTime.of(LocalDate.of(now.getYear(), month, month.length(now.isLeapYear())), LocalTime.MAX);
}
/**
* 本半年开始时间
*
* @return
*/
public static LocalDateTime halfYearStartTime() {
LocalDate now = LocalDate.now();
Month month = (now.getMonthValue() > 6) ? Month.JULY : Month.JANUARY;
return LocalDateTime.of(LocalDate.of(now.getYear(), month, 1), LocalTime.MIN);
}
/**
* 本半年结束时间
*
* @return
*/
public static LocalDateTime halfYearEndTime() {
LocalDate now = LocalDate.now();
Month month = (now.getMonthValue() > 6) ? Month.DECEMBER : Month.JUNE;
return LocalDateTime.of(LocalDate.of(now.getYear(), month, month.length(now.isLeapYear())), LocalTime.MAX);
}
/**
* 本年开始时间
*
* @return
*/
public static LocalDateTime yearStartTime() {
return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
}
/**
* 本年结束时间
*
* @return
*/
public static LocalDateTime yearEndTime() {
return LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
}
/**
* 上周开始时间
*
* @return
*/
public static LocalDateTime lastWeekStartTime() {
LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
return LocalDateTime.of(lastWeek.minusDays(lastWeek.getDayOfWeek().getValue() - 1), LocalTime.MIN);
}
/**
* 上周结束时间
*
* @return
*/
public static LocalDateTime lastWeekEndTime() {
LocalDate lastWeek = LocalDate.now().minus(1L, ChronoUnit.WEEKS);
return LocalDateTime.of(lastWeek.plusDays(7 - lastWeek.getDayOfWeek().getValue()), LocalTime.MAX);
}
/**
* 上月开始时间
*
* @return
*/
public static LocalDateTime lastMonthStartTime() {
return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
}
/**
* 上月结束时间
*
* @return
*/
public static LocalDateTime lastMonthEndTime() {
return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
}
/**
* 上季度开始时间
*
* @return
*/
public static LocalDateTime lastQuarterStartTime() {
LocalDate now = LocalDate.now();
Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
Month firstMonthOfLastQuarter = firstMonthOfQuarter.minus(3L);
int yearOfLastQuarter = firstMonthOfQuarter.getValue() < 4 ? now.getYear() - 1 : now.getYear();
return LocalDateTime.of(LocalDate.of(yearOfLastQuarter, firstMonthOfLastQuarter, 1), LocalTime.MIN);
}
/**
* 上季度结束时间
*
* @return
*/
public static LocalDateTime lastQuarterEndTime() {
LocalDate now = LocalDate.now();
Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
Month firstMonthOfLastQuarter = firstMonthOfQuarter.minus(1L);
int yearOfLastQuarter = firstMonthOfQuarter.getValue() < 4 ? now.getYear() - 1 : now.getYear();
return LocalDateTime.of(LocalDate.of(yearOfLastQuarter, firstMonthOfLastQuarter, firstMonthOfLastQuarter.maxLength()), LocalTime.MAX);
}
/**
* 上半年开始时间
*
* @return
*/
public static LocalDateTime lastHalfYearStartTime() {
LocalDate now = LocalDate.now();
int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() : now.getYear() - 1;
Month firstMonthOfLastHalfYear = (now.getMonthValue() > 6) ? Month.JANUARY : Month.JULY;
return LocalDateTime.of(LocalDate.of(lastHalfYear, firstMonthOfLastHalfYear, 1), LocalTime.MIN);
}
/**
* 上半年结束时间
*
* @return
*/
public static LocalDateTime lastHalfYearEndTime() {
LocalDate now = LocalDate.now();
int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() : now.getYear() - 1;
Month lastMonthOfLastHalfYear = (now.getMonthValue() > 6) ? Month.JUNE : Month.DECEMBER;
return LocalDateTime.of(LocalDate.of(lastHalfYear, lastMonthOfLastHalfYear, lastMonthOfLastHalfYear.maxLength()), LocalTime.MAX);
}
/**
* 上一年开始时间
*
* @return
*/
public static LocalDateTime lastYearStartTime() {
return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
}
/**
* 上一年结束时间
*
* @return
*/
public static LocalDateTime lastYearEndTime() {
return LocalDateTime.of(LocalDate.now().minus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
}
/**
* 下周开始时间
*
* @return
*/
public static LocalDateTime nextWeekStartTime() {
LocalDate nextWeek = LocalDate.now().plus(1L, ChronoUnit.WEEKS);
return LocalDateTime.of(nextWeek.minusDays(nextWeek.getDayOfWeek().getValue() - 1), LocalTime.MIN);
}
/**
* 下周结束时间
*
* @return
*/
public static LocalDateTime nextWeekEndTime() {
LocalDate nextWeek = LocalDate.now().plus(1L, ChronoUnit.WEEKS);
return LocalDateTime.of(nextWeek.plusDays(7 - nextWeek.getDayOfWeek().getValue()), LocalTime.MAX);
}
/**
* 下月开始时间
*
* @return
*/
public static LocalDateTime nextMonthStartTime() {
return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
}
/**
* 下月结束时间
*
* @return
*/
public static LocalDateTime nextMonthEndTime() {
return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
}
/**
* 下季度开始时间
*
* @return
*/
public static LocalDateTime nextQuarterStartTime() {
LocalDate now = LocalDate.now();
Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
Month firstMonthOfNextQuarter = firstMonthOfQuarter.plus(3L);
int yearOfNextQuarter = firstMonthOfQuarter.getValue() > 9 ? now.getYear() + 1 : now.getYear();
return LocalDateTime.of(LocalDate.of(yearOfNextQuarter, firstMonthOfNextQuarter, 1), LocalTime.MIN);
}
/**
* 下季度结束时间
*
* @return
*/
public static LocalDateTime nextQuarterEndTime() {
LocalDate now = LocalDate.now();
Month firstMonthOfQuarter = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
Month firstMonthOfNextQuarter = firstMonthOfQuarter.plus(5L);
int yearOfNextQuarter = firstMonthOfQuarter.getValue() > 9 ? now.getYear() + 1 : now.getYear();
return LocalDateTime.of(LocalDate.of(yearOfNextQuarter, firstMonthOfNextQuarter, firstMonthOfNextQuarter.maxLength()), LocalTime.MAX);
}
/**
* 上半年开始时间
*
* @return
*/
public static LocalDateTime nextHalfYearStartTime() {
LocalDate now = LocalDate.now();
int nextHalfYear = (now.getMonthValue() > 6) ? now.getYear() + 1 : now.getYear();
Month firstMonthOfNextHalfYear = (now.getMonthValue() > 6) ? Month.JANUARY : Month.JULY;
return LocalDateTime.of(LocalDate.of(nextHalfYear, firstMonthOfNextHalfYear, 1), LocalTime.MIN);
}
/**
* 上半年结束时间
*
* @return
*/
public static LocalDateTime nextHalfYearEndTime() {
LocalDate now = LocalDate.now();
int lastHalfYear = (now.getMonthValue() > 6) ? now.getYear() + 1 : now.getYear();
Month lastMonthOfNextHalfYear = (now.getMonthValue() > 6) ? Month.JUNE : Month.DECEMBER;
return LocalDateTime.of(LocalDate.of(lastHalfYear, lastMonthOfNextHalfYear, lastMonthOfNextHalfYear.maxLength()), LocalTime.MAX);
}
/**
* 下一年开始时间
*
* @return
*/
public static LocalDateTime nextYearStartTime() {
return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.firstDayOfYear()), LocalTime.MIN);
}
/**
* 下一年结束时间
*
* @return
*/
public static LocalDateTime nextYearEndTime() {
return LocalDateTime.of(LocalDate.now().plus(1L, ChronoUnit.YEARS).with(TemporalAdjusters.lastDayOfYear()), LocalTime.MAX);
}
public static void main(String[] args) {
System.out.println("当前时间:" + now());
System.out.println("Date 转 LocalDateTime:" + convert(new Date()));
System.out.println("LocalDateTime 转 Date:" + convert(LocalDateTime.now()));
System.out.println("今天开始时间:" + todayStartTime());
System.out.println("今天结束时间:" + todayEndTime());
System.out.println("昨天开始时间:" + yesterdayStartTime());
System.out.println("昨天结束时间:" + yesterdayEndTime());
System.out.println("最近7天开始时间:" + last7DaysStartTime());
System.out.println("最近7天结束时间:" + last7DaysEndTime());
System.out.println("最近30天开始时间:" + last30DaysStartTime());
System.out.println("最近30天天结束时间:" + last30DaysEndTime());
System.out.println("最近一年开始时间:" + last1YearStartTime());
System.out.println("最近一年结束时间:" + last1YearEndTime());
System.out.println("本周开始时间:" + weekStartTime());
System.out.println("本周结束时间:" + weekEndTime());
System.out.println("本月开始时间:" + monthStartTime());
System.out.println("本月结束时间:" + monthEndTime());
System.out.println("本季度开始时间:" + quarterStartTime());
System.out.println("本季度结束时间:" + quarterEndTime());
System.out.println("本半年开始时间:" + halfYearStartTime());
System.out.println("本半年结束时间:" + halfYearEndTime());
System.out.println("本年开始时间:" + yearStartTime());
System.out.println("本年结束时间:" + yearEndTime());
System.out.println("上周开始时间:" + lastWeekStartTime());
System.out.println("上周结束时间:" + lastWeekEndTime());
System.out.println("上月开始时间:" + lastMonthStartTime());
System.out.println("上月结束时间:" + lastMonthEndTime());
System.out.println("上季度开始时间:" + lastQuarterStartTime());
System.out.println("上季度结束时间:" + lastQuarterEndTime());
System.out.println("上半年开始时间:" + lastHalfYearStartTime());
System.out.println("上半年结束时间:" + lastHalfYearEndTime());
System.out.println("上一年开始时间:" + lastYearStartTime());
System.out.println("上一年结束时间:" + lastYearEndTime());
System.out.println("下周开始时间:" + nextWeekStartTime());
System.out.println("下周结束时间:" + nextWeekEndTime());
System.out.println("下月开始时间:" + nextMonthStartTime());
System.out.println("下月结束时间:" + nextMonthEndTime());
System.out.println("下季度开始时间:" + nextQuarterStartTime());
System.out.println("下季度结束时间:" + nextQuarterEndTime());
System.out.println("下半年开始时间:" + nextHalfYearStartTime());
System.out.println("下半年结束时间:" + nextHalfYearEndTime());
System.out.println("下一年开始时间:" + nextYearStartTime());
System.out.println("下一年结束时间:" + nextYearEndTime());
}
}
LocalDate,LocalDateTime获取每周,每月,每年的第一天和最后一天,获取一周七天的日期,获取每月的所有日期
最近再弄日历相关的东西,然后就在获取每月所有日期,每周所有日期,每周,每月,每年的第一天和最后一天等,工具类没有这些方法,就写下来记录一下:
/**
* 一周的第一天
*
* @param localDate 当地日期
* @return {@link LocalDate}
*/
public static LocalDate firstDayOfWeek(LocalDate localDate){
return localDate.with(DayOfWeek.MONDAY);
}
/**
* 一周的最后一天
*
* @param localDate 当地日期
* @return {@link LocalDate}
*/
public static LocalDate lastDayOfWeek(LocalDate localDate){
return localDate.with(DayOfWeek.SUNDAY);
}
/**
* 月的第一天
*
* @param localDate 当地日期
* @return {@link LocalDate}
*/
public static LocalDate firstDayOfMonth(LocalDate localDate){
return localDate.with(TemporalAdjusters.firstDayOfMonth());
}
/**
* 月的最后一天
*
* @param localDate 当地日期
* @return {@link LocalDate}
*/
public static LocalDate lastDayOfMonth(LocalDate localDate){
return localDate.with(TemporalAdjusters.lastDayOfMonth());
}
/**
* 每年的第一天
*
* @param localDate 当地日期
* @return {@link LocalDate}
*/
public static LocalDate firstDayOfYear(LocalDate localDate){
return localDate.with(TemporalAdjusters.firstDayOfYear());
}
/**
* 每年的最后一天
*
* @param localDate 当地日期
* @return {@link LocalDate}
*/
public static LocalDate lastDayOfYear(LocalDate localDate){
return localDate.with(TemporalAdjusters.lastDayOfYear());
}
/**
* 每周的所有日期 即周一到周日
*
* @param localDate 当地日期
* @return {@link List<LocalDate>}
*/
public static List<LocalDate> allDaysOfWeek(LocalDate localDate){
List<LocalDate> allDays=new ArrayList<>();
allDays.add(localDate.with(DayOfWeek.MONDAY));
allDays.add(localDate.with(DayOfWeek.TUESDAY));
allDays.add(localDate.with(DayOfWeek.WEDNESDAY));
allDays.add(localDate.with(DayOfWeek.THURSDAY));
allDays.add(localDate.with(DayOfWeek.FRIDAY));
allDays.add(localDate.with(DayOfWeek.SATURDAY));
allDays.add(localDate.with(DayOfWeek.SUNDAY));
return allDays;
}
/**
* 每月的所有日期 即1日到31日
*
* @param localDate 当地日期
* @return {@link List<LocalDate>}
*/
public static List<LocalDate> allDaysOfMonth(LocalDate localDate){
List<LocalDate> allDays=new ArrayList<>();
LocalDate firstDayOfMonth = firstDayOfMonth(localDate);
LocalDate lastDayOfMonth = lastDayOfMonth(localDate);
allDays.add(firstDayOfMonth);
int i = 1;
LocalDate temp = firstDayOfMonth;
while (!temp.isEqual(lastDayOfMonth)){
LocalDate day = firstDayOfMonth.plusDays(i);
allDays.add(day);
temp=day;
i++;
}
return allDays;
}
如何获取农历日期,生肖,传统节日
hutool工具包有相关的现成的工具包可以使用!!!!
LocalDateTime获取当前月的第一天和最后一天
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
LocalDateTime firstday = now.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);
LocalDateTime lastDay = now.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59);
相关文章
- 图片上传api——chevereto个人图床搭建&后端发送请求
- Python&R语言-python和r相遇
- Interview: 2020春季中高级前端面试记 | 渐进增强题目甄选(上篇)-react&http基础
- SP11444 MAXOR - MAXOR & bzoj 2741 【FOTILE模拟赛】L
- Garadle 插件扩展属性&源集SourceSets
- 00SEC-D&D数据泄露报警日报【第17期】
- ECCV2022 &CVPR2022论文速递2022.7.19!
- 腾讯AI Lab计算机视觉中心人脸&OCR团队近期成果介绍(2)
- AMP MySQL升级提升数据库性能的必要之举(amp mysql升级)
- 社区(php&&mysql)一
- php函数之子字符串替换str_replace
- 磁盘缓存专题之一缓存命中和缓存未命中&缓存与缓冲间的差异