【方法封装】时间格式化输出,获取请求设备和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单位在日常获取文件大小时使用频率较少,故没有纳入计算
}
相关推荐
ziyue75751 分钟前
idea启用lombok
java·intellij-idea·idea·lombok·软件
tmacfrank24 分钟前
Java 原生网络编程(BIO | NIO | Reactor 模式)
java·开发语言·网络
python算法(魔法师版)26 分钟前
.NET NativeAOT 指南
java·大数据·linux·jvm·.net
专注VB编程开发20年28 分钟前
VB.NET关于接口实现与简化设计的分析,封装其他类
java·前端·数据库
大数据魔法师1 小时前
Redis(三) - 使用Java操作Redis详解
java·数据库·redis
天天爱吃肉82181 小时前
车载以太网驱动智能化:域控架构设计与开发实践
java·运维·网络协议·微服务
IT光1 小时前
Redis 五种类型基础操作(redis-cli + Spring Data Redis)
java·数据库·redis·spring·缓存
keke101 小时前
Java【14_3】接口(Comparable和Comparator)、内部类-示例
java·开发语言·servlet
代码不停1 小时前
Java二叉树题目练习
java·开发语言·数据结构
MaCa .BaKa2 小时前
38-日语学习小程序
java·vue.js·spring boot·学习·mysql·小程序·maven