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

目录

时间类

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

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

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

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

设备类

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

 请求IP类

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

文件容量类

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


时间类

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

    /**** @return 无参的获取当前时间*/public static String getTime(){SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String newDateFormat = dateFormat.format(new Date());return newDateFormat;}
  • 测试案例
public static void main(String[] args) {//获取当前时间,以特定格式化形式输出System.out.println(getTime());
}
  • 测试结果


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

     /**** @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;}
  • 测试案例
    public static void main(String[] args) {//自定义时间,以特定格式化输出System.out.println(getTime2("Thu Mar 14 16:24:28 CST 2024"));}
  • 测试结果


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

     /*** 无参的获取当前时间* @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;}
  • 测试案例
    public static void main(String[] args) {//获取当前时间,自定义格式化System.out.println(getTime("yyyy-MM-dd"));}
  • 测试结果


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

    /**** @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;}
  • 测试案例
   public static void main(String[] args) {//自定义时间,自定义格式化System.out.println(getTime2("Thu Mar 14 16:00:30 CST 2024","yyyy/MM/dd HH:mm:ss"));}
  • 测试结果


设备类

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

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地址;

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流时,有需要对文件大小格式化的场景;

private static String formatFileSize(long size){if(size < 1024){//如果获取到的文件大小不足1KB,则输出的单位为Breturn size +"B";}else if(size < 1024* 1024){//如果文件大小不足1MB,则输出的单位为KBreturn String.format("%.2f KB",(double) size/ 1024);}else if(size <1024 * 1024 *1024){//如果文件大小不足1GB,则输出的单位为MBreturn String.format("%.2f MB",(double) size / 1024 /1024);}else{//如果文件大小不足1TB,则输出的单位为GBreturn String.format("%.2f GB",(double) size /1024 /1024 /1024);}//TB单位在日常获取文件大小时使用频率较少,故没有纳入计算
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/539341.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP+Lunix+GIT 如何快速使用宝塔WebHook快速自动化部署

搭建前需准备&#xff1a;git仓库&#xff08;我这里使用的gitee 其他的异曲同工&#xff09; 宝塔一个 背景&#xff1a;很多小伙伴在本地开发完上传完远程还需要在服务器进行拉取项目才会更新 ,这样的操作虽然对线上项目较为安全但是在处于测试情况下费事费力&#xff0c;所…

02-java基础--注释、关键字、字面量、变量等

一、注释 注释的内容不参与编译与运行。注释不要嵌套。 二、关键字 关键字&#xff1a;就是被java赋予了特定含义的英文单词关键字的字母全部都是小写 三、字面量 在计算机科学中&#xff0c;字面量&#xff08;literal&#xff09;是用于表达源代码中一个固定值的表示法…

提升零售行业竞争力的信息抽取技术应用与实践

一、引言 在当今快速发展的零售行业中&#xff0c;沃尔玛、家乐福等大型连锁超市为消费者提供了丰富的日常食品和日用品。为了进一步提升客户体验和优化库存管理&#xff0c;这些零售巨头纷纷开始探索和应用先进的信息抽取技术。 本文将深入探讨一个成功的信息抽取项目&#…

HTML5、CSS3面试题(二)

上一章:HTML5、CSS3面试题&#xff08;一&#xff09; 哪些是块级元素那些是行内元素&#xff0c;各有什么特点 &#xff1f;&#xff08;必会&#xff09; 行内元素: a、span、b、img、strong、input、select、lable、em、button、textarea 、selecting 块级元素&#xff1…

计算机网络设计核心思想

大家好&#xff0c;我是大师兄&#xff0c;本篇主要是对计算机网络一些核心思想理解&#xff0c;属于内功心法&#xff0c;初学者适合入门&#xff0c;非初学者可以学习其设计思想&#xff0c;总之希望帮助大家提高对网络的理解&#xff1b; 深入浅出Linux网络硬核指南 本系列从…

基于机器学习的人脸识别算法的设计与实现

概要 人脸识别技术是一种新型的生物特征认证技术。人脸识别技术也是一个非常活跃的研究领域&#xff0c;涵盖了许多领域&#xff0c;例如数字图像处理。随着人们对应用程序需求的增长&#xff0c;面部识别技术趋向于大量使用&#xff0c;使用微芯片和标准化。人脸检测是快速准确…

【idea】查看spring源代码没有注释

问题描述 点击类&#xff08;如&#xff1a;AnnotationConfigApplicationContext &#xff09;看到的没有注释 看到有&#xff1a; Decompiled .class file, bytecode version: 52.0 (java 8) 翻译过来是&#xff1a;解压.class文件&#xff0c;字节码版本&#xff1a;52.0…

Monorepo 解决方案 — 基于 Bazel 的 Xcode 性能优化实践

背景介绍 书接上回《Monorepo 解决方案 — Bazel 在头条 iOS 的实践》&#xff0c;在头条工程切换至 Bazel 构建系统后&#xff0c;为了支持用户使用 Xcode 开发的习惯&#xff0c;我们使用了开源项目 Tulsi 作为生成工具&#xff0c;用于将 Bazel 工程转换为 Xcode 工程。但是…

深入浅出:Objective-C中使用MWFeedParser下载豆瓣RSS

摘要 本文旨在介绍如何在Objective-C中使用MWFeedParser库下载豆瓣RSS内容&#xff0c;同时展示如何通过爬虫代理IP技术和多线程提高爬虫的效率和安全性。 背景 随着信息量的激增&#xff0c;爬虫技术成为了获取和处理大量网络数据的重要手段。Objective-C作为一种成熟的编程…

Gin框架 源码解析

https://zhuanlan.zhihu.com/p/136253346 启动 因为 gin 的安装教程已经到处都有了&#xff0c;所以这里省略如何安装&#xff0c; 建议直接去 github 官方地址的 README 中浏览安装步骤&#xff0c;顺便了解 gin 框架的功能。https://github.com/gin-gonic/gin 最简单的代码…

政安晨:【深度学习处理实践】(七)—— 文本数据预处理

咱们接着这个系列的上一篇文章继续&#xff1a; 政安晨&#xff1a;【深度学习处理实践】&#xff08;六&#xff09;—— RNN的高级用法https://blog.csdn.net/snowdenkeke/article/details/136660644 在深度学习中&#xff0c;文本数据预处理是指将原始文本数据转换为可供模…

腾讯云轻量服务器地域选择教程,2024最新地域选择攻略

腾讯云服务器地域怎么选择&#xff1f;不同地域之间有什么区别&#xff1f;腾讯云哪个地域好&#xff1f;地域选择遵循就近原则&#xff0c;访客距离地域越近网络延迟越低&#xff0c;速度越快。腾讯云百科txybk.com告诉大家关于地域的选择还有很多因素&#xff0c;地域节点选择…