【方法封装】时间格式化输出,获取请求设备和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单位在日常获取文件大小时使用频率较少,故没有纳入计算
}
相关推荐
AIGS0012 小时前
企业AI落地:从RAG到AgentRAG的技术跃迁
java·人工智能·人工智能ai大模型应用
2601_962341302 小时前
计算机毕业设计之jsp考研在线复习平台
java·大数据·开发语言·hadoop·python·考研·课程设计
huangjiazhi_3 小时前
纯C++实现ini文件操作
java·后端·spring
zhixingheyi_tian3 小时前
JVM 之 GCLocker
java·jvm
码哥字节3 小时前
把 Cursor 的烂输出变成好代码,这 10 个 Prompt 改造让我省了 80% 改稿时间
java·ai编程工具·cursor 配置·prompt 技巧
2503_931712483 小时前
10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆
java·大数据·数据库
折哥的程序人生 · 物流技术专研3 小时前
第4篇:抽象工厂模式——产品族一键创建
java·设计模式·抽象工厂模式·创建型模式·编程进阶·产品族·扩充系列
正儿八经的少年3 小时前
Spring Boot
java·spring boot·后端
未秃头的程序猿3 小时前
虚拟线程用了一年,我真香了——10倍吞吐量是真实存在的
java·后端·面试