【方法封装】时间格式化输出,获取请求设备和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单位在日常获取文件大小时使用频率较少,故没有纳入计算
}
相关推荐
都叫我大帅哥3 分钟前
从Python到Java:为什么企业级Agent最终会选择Java?
java·ai编程
wanderist.15 分钟前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
腻害兔2 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
心念枕惊2 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
景同学4 小时前
把 AI 用到线上运维:可行、有效,前提是喂足信息——一次 Full GC 排障实录
java·人工智能·后端
C++、Java和Python的菜鸟4 小时前
第7章 后端Web实战(Tlias系统)
java
憧憬成为java架构高手的小白4 小时前
黑马八股--spring框架学习
java·学习·spring
唐青枫5 小时前
Java Picocli 实战详解:用注解写出好用的命令行工具
java
X-⃢_⃢-X5 小时前
四、OpenFeign远程调用
java·微服务·springboot·springcloud
减瓦5 小时前
深入 Quarkus:云原生时代 Java 的重生之路
java·开发语言·云原生