【方法封装】时间格式化输出,获取请求设备和IP

目录

时间类

[1.1 获取当前时间,以特定格式化形式输出](#1.1 获取当前时间,以特定格式化形式输出)

[1.2 自定义时间,以特定格式化输出](#1.2 自定义时间,以特定格式化输出)

[1.3 获取当前时间,自定义格式化](#1.3 获取当前时间,自定义格式化)

[1.4 自定义时间,自定义格式化](#1.4 自定义时间,自定义格式化)

设备类

根据请求头信息,获取用户发起请求的设备

请求IP类

根据请求头信息,获取用户发起请求的IP地址

文件容量类

在使用IO流时,有需要对文件大小格式化的场景


时间类

1.1 获取当前时间,以特定格式化形式输出

java 复制代码
    /**
     *
     * @return 无参的获取当前时间
     */
    public static String getTime(){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String newDateFormat = dateFormat.format(new Date());

        return newDateFormat;
    }
  • 测试案例
java 复制代码
public static void main(String[] args) {
        //获取当前时间,以特定格式化形式输出
        System.out.println(getTime());
}
  • 测试结果

1.2 自定义时间,以特定格式化输出

java 复制代码
     /**
     *
     * @param time 需要格式化的时间
     * @return	以"yyyy年MM月dd日 HH:mm:ss"格式化后的时间
     */
    public static String getTime2(String time) {
        Date date =null;
        String formattedTime =null;
        try{
            date = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US).parse(time);
            formattedTime = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss",Locale.CHINA).format(date);
            return formattedTime;
        }catch (Exception e) {
            formattedTime = "错误的时间格式";

        }
        return formattedTime;
    }
  • 测试案例
java 复制代码
    public static void main(String[] args) {

        //自定义时间,以特定格式化输出
        System.out.println(getTime2("Thu Mar 14 16:24:28 CST 2024"));
    }
  • 测试结果

1.3 获取当前时间,自定义格式化

java 复制代码
     /**
     * 无参的获取当前时间
     * @param toFormat 需要格式化的时间类型
     * @return	格式化后的时间
     */
	public static String getTime(String toFormat){
		Date date = new Date();
		SimpleDateFormat dateFormat = new SimpleDateFormat(toFormat);
		String newDateFormat = dateFormat.format(date);

		return newDateFormat;
	}
  • 测试案例
java 复制代码
    public static void main(String[] args) {
        
        //获取当前时间,自定义格式化
        System.out.println(getTime("yyyy-MM-dd"));

    }
  • 测试结果

1.4 自定义时间,自定义格式化

java 复制代码
    /**
     *
     * @param time 需要格式化的时间
     * @param toFormat	需要格式化的类型
     * @return	格式化后的时间
     */
    public static String getTime2(String time,String toFormat){
        Date date =null;
        String formattedTime =null;
        try{
            date = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US).parse(time);
            formattedTime = new SimpleDateFormat(toFormat,Locale.CHINA).format(date);
            return formattedTime;
        }catch (Exception e) {
            formattedTime = "错误的时间格式";

        }
        return formattedTime;
    }
  • 测试案例
java 复制代码
   public static void main(String[] args) {

        //自定义时间,自定义格式化
        System.out.println(getTime2("Thu Mar 14 16:00:30 CST 2024","yyyy/MM/dd HH:mm:ss"));
    }
  • 测试结果

设备类

根据请求头信息,获取用户发起请求的设备;

java 复制代码
public static String getClientDevice(HttpServletRequest request) {
        String userAgent = request.getHeader("User-Agent");

        if (userAgent.contains("Windows")) {
            return "Windows PC";
        } else if (userAgent.contains("Mac")) {
            return "Mac";
        } else if (userAgent.contains("Linux")) {
            return "Linux PC";
        } else if (userAgent.contains("Android")) {
            return "Android";
        } else if (userAgent.contains("iPhone") || userAgent.contains("iPad"))             
        {
            return "iOS";
        } else {
            return "Other";
        }
    }

请求IP类

根据请求头信息,获取用户发起请求的IP地址;

java 复制代码
public static String getClientIP(HttpServletRequest request) {
        String ipAddress = request.getHeader("X-Forwarded-For");
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getRemoteAddr();
        }
        
        return ipAddress;
    }

文件容量类

在使用IO流时,有需要对文件大小格式化的场景;

java 复制代码
private static String formatFileSize(long size){

    if(size < 1024){
        //如果获取到的文件大小不足1KB,则输出的单位为B
        return size +"B";
    }else if(size < 1024* 1024){
        //如果文件大小不足1MB,则输出的单位为KB
        return String.format("%.2f KB",(double) size/ 1024);
    }else if(size <1024 * 1024 *1024){
        //如果文件大小不足1GB,则输出的单位为MB
        return String.format("%.2f MB",(double) size / 1024 /1024);
    }else{
        //如果文件大小不足1TB,则输出的单位为GB
        return String.format("%.2f GB",(double) size /1024 /1024 /1024);
    }
    //TB单位在日常获取文件大小时使用频率较少,故没有纳入计算
}
相关推荐
❥ღ Komo·43 分钟前
K8s服务发现与DNS解析全解析
java·开发语言
g***B7383 小时前
Java 工程复杂性的真正来源:从语言设计到现代架构的全链路解析
java·人工智能·架构
期待のcode5 小时前
MyBatisX插件
java·数据库·后端·mybatis·springboot
醇氧7 小时前
【Windows】优雅启动:解析一个 Java 服务的后台启动脚本
java·开发语言·windows
sunxunyong7 小时前
doris运维命令
java·运维·数据库
菜鸟起航ing7 小时前
Spring AI 全方位指南:从基础入门到高级实战
java·人工智能·spring
古城小栈8 小时前
Docker 多阶段构建:Go_Java 镜像瘦身运动
java·docker·golang
MapGIS技术支持8 小时前
MapGIS Objects Java计算一个三维点到平面的距离
java·开发语言·平面·制图·mapgis
Coder_Boy_8 小时前
业务导向型技术日志首日记录(业务中使用的技术栈)
java·驱动开发·微服务
盖世英雄酱581369 小时前
springboot 项目 从jdk 8 升级到jdk21 会面临哪些问题
java·后端