广告
返回顶部
首页 > 资讯 > 精选 >Java日期操作方法工具类的示例分析
  • 202
分享到

Java日期操作方法工具类的示例分析

java 2023-05-30 22:05:02 202人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关Java日期操作方法工具类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例讲述了Java日期操作方法工具类,具体如下:package com.GClo

这篇文章将为大家详细讲解有关Java日期操作方法工具类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

本文实例讲述了Java日期操作方法工具类,具体如下:

package com.GCloud.common;import org.apache.Http.util.TextUtils;import java.text.ParseException;import java.text.SimpleDateFORMat;import java.util.Calendar;import java.util.Date;import java.util.regex.Pattern;public class DateUtil { public static final String CHINA_DATE_FORMAT = "yyyy年MM月dd日"; public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_FORMAT = "yyyy-MM-dd"; public static final String TIME_FORMAT = "HH:mm:ss"; //----------------判断-----------------------------------------------  public static boolean isLeapYear(int yearNum) { boolean isLeep = false; if ((yearNum % 4 == 0) && (yearNum % 100 != 0))  isLeep = true; else if (yearNum % 400 == 0)  isLeep = true; else {  isLeep = false; } return isLeep; }  public static boolean isDate(String date) { //判断年月日的正则表达式,接受输入格式为2010-12-24,可接受平年闰年的日期 String regex = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)"; Pattern pattern = Pattern.compile(regex); return pattern.matcher(date).matches(); }  public static boolean verifyBirthDay(String birthday) { if (TextUtils.isEmpty(birthday)) return false; if (!birthday.contains("-")) return false; String[] arr = birthday.split("-"); if (null == arr || arr.length != 3 || arr[0].length() != 4 || arr[1].length() != 2 || arr[2].length() != 2)  return false; int year = getYear(new Date()); int birthYear = Integer.parseInt(arr[0]); if (birthYear <= 1900 || birthYear > year) return false; String curDate = formatDate(new Date(), DATE_FORMAT); if (birthday.compareTo(curDate) > 0) return false; return isDate(birthday); } //-------------------自动转化--------------------------------------------  public static Date parseDateByAuto(String dateStr) { if (StringUtil.isEmpty(dateStr)) {  return null; } String format = DATE_FORMAT; if (dateStr.indexOf("/") > -1) {  format = format.replace("-", "/"); } if (dateStr.indexOf(":") != -1) {  format += " HH:mm"; } //存在秒 if (dateStr.indexOf(":") != dateStr.lastIndexOf(":")) {  format += ":ss"; } return parseDate(dateStr, format); }  public static String formatDateByAuto(Date date){ String format = DATE_FORMAT; if( !(date instanceof java.sql.Date) && (date.getSeconds()>0||date.getMinutes()>0||date.getHours()>0)){  format = DATETIME_FORMAT; } return formatDate(date, format); } //------------当前日期与时间 --------------------------------  public static Date getCurrDate() {return parseDate(formatDate(new Date())); }  public static Date getCurrDateTime() {return parseDate(formatDate(new Date())); }  public static String getCurrDateStr() { return formatDate(new Date()); }  public static String getCurrDateTimeStr() { return formatDate(new Date(), DATETIME_FORMAT);} public static String formatCurrDate() {return formatDate(new Date(),DATE_FORMAT); } public static String formatCurrDateTime() {return formatDate(new Date(),DATETIME_FORMAT);} public static String formatCurrDateToS(String strFormat) {return formatDate(new Date(), strFormat); } //-----------时间计算--------------------------------------------  public static int getDiffDate(String strDateBegin, String strDateEnd, int iType) { Calendar calBegin = Calendar.getInstance(); calBegin.setTime(parseDate(strDateBegin, DATETIME_FORMAT)); Calendar calEnd = Calendar.getInstance(); calBegin.setTime(parseDate(strDateEnd, DATETIME_FORMAT)); long lBegin = calBegin.getTimeInMillis(); long lEnd = calEnd.getTimeInMillis(); if (iType == Calendar.SECOND)  return (int) ((lEnd - lBegin) / 1000L); if (iType == Calendar.MINUTE)  return (int) ((lEnd - lBegin) / 60000L); if (iType == Calendar.HOUR)  return (int) ((lEnd - lBegin) / 3600000L); if (iType == Calendar.DAY_OF_MONTH) {  return (int) ((lEnd - lBegin) / 86400000L); } return -1; }  public static String getADDDateTime(String strDate, int count, int dayType) { Calendar cal = Calendar.getInstance(); cal.setTime(parseDate(strDate)); cal.add(dayType, count); SimpleDateFormat sdf = null; if ((dayType == Calendar.YEAR) || (dayType == Calendar.MONTH) || (dayType == Calendar.DAY_OF_MONTH))  sdf = new SimpleDateFormat(DATE_FORMAT); else  sdf = new SimpleDateFormat(DATETIME_FORMAT); return sdf.format(cal.getTime()); }  public static Date getAddDate(Date date, int iCount) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DAY_OF_MONTH, iCount); return cal.getTime(); }  public static int compareDate(String dateStr1, String dateStr2) { Date date1 = parseDate(dateStr1); Date date2 = parseDate(dateStr2); if (date1.getTime() > date2.getTime())  return -1; else if (date1.getTime() < date2.getTime())  return 1; else  return 0; } public static int compareDate(Date date1, Date date2) { if (date1.getTime() > date2.getTime())  return -1; else if (date1.getTime() < date2.getTime())  return 1; else  return 0; }  public static int getDiffDays(Date startDate, Date endDate) { int days = 0; if (startDate.after(endDate)) {  Date temp = startDate;  startDate = endDate;  endDate = temp; } days = (int) (endDate.getTime() - startDate.getTime()) / 1000 * 60 * 60 * 24; return days; }  public static Date getAfterDay(Date date, int n) { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DATE, n); return c.getTime(); } //---------获取时间天数----------------------------------------------  public static String getMonthEnd(String dateStr) { //当前第一天 Date date = parseDate(getMonthBegin(dateStr)); Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.MONTH, 1); c.add(Calendar.DAY_OF_YEAR, -1); return formatDate(c.getTime()); } public static String getMonthEnd(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE)); return formatDate(c.getTime()); }  public static String getMonthBegin(String dateStr) { Date date = parseDate(dateStr); return formatDate(date, "yyyy-MM") + 01; } public static String getMonthBegin(Date date) { return formatDate(date, "yyyy-MM") + 01; } //--------------格式化日期-----------------------------------------  public static String formatDate(Date date, String format) { return new SimpleDateFormat(format).format(date); } public static String formatDate(Date date) { return formatDate(date, DATE_FORMAT); } public static String formateChinaDate(Date date) { return formatDate(date, CHINA_DATE_FORMAT); } public static String formateDateTime(Date date) { return formatDate(date, DATETIME_FORMAT); } public static String formateTime(Date date) { return formatDate(date, TIME_FORMAT); } //-----------------格式化字符串为日期--------------------------------------  public static Date parseDate(String date, String format) { try {  return new SimpleDateFormat(format).parse(date); } catch (ParseException e) {  e.printStackTrace(); } return null; } public static Date parseDate(String date) { return parseDate(date, DATE_FORMAT);} public static Date parseChinaDate(String date) { return parseDate(date, CHINA_DATE_FORMAT); } public static Date parseDateTime(String date) { return parseDate(date, DATETIME_FORMAT); } public static Date parseTime(String date) { return parseDate(date, TIME_FORMAT); } //---获取年月日时分秒----------------------------------------------------  public static int getYear(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.YEAR); }  public static int getMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MONTH) + 1; }  public static int getDay(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.DAY_OF_MONTH); }  public static int getWeek(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.DAY_OF_WEEK); }  public static int getHour(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.HOUR_OF_DAY); }  public static int getMinute(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MINUTE); }  public static int getSecond(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.SECOND); } //--------------获取星期几---------------------------------------------------  public static String getWeekDayName(String strDate) { String[] mName = {"日", "一", "二", "三", "四", "五", "六"}; Date date = parseDate(strDate); int week = getWeek(date); return "星期" + mName[week]; } public static String getWeekDayName(Date date) { String[] mName = {"日", "一", "二", "三", "四", "五", "六"}; int week = getWeek(date); return "星期" + mName[week]; }  public static int getWeekNumOfYear(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.WEEK_OF_YEAR); } public static int getWeekNumOfYear(String date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(parseDate(date, DATE_FORMAT)); return calendar.get(Calendar.WEEK_OF_YEAR); }  public static String getYearWeekFirstDay(int yearNum, int weekNum) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, yearNum); cal.set(Calendar.WEEK_OF_YEAR, weekNum); cal.set(Calendar.DAY_OF_WEEK, 2); String tempYear = Integer.toString(yearNum); String tempMonth = Integer.toString(cal.get(Calendar.MONTH) + 1); String tempDay = Integer.toString(cal.get(Calendar.DAY_OF_MONTH)-1); return tempYear + "-" + tempMonth + "-" + tempDay; }  public static String getYearWeekEndDay(int yearNum, int weekNum) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, yearNum); cal.set(Calendar.WEEK_OF_YEAR, weekNum + 1); cal.set(Calendar.DAY_OF_WEEK, 1); String tempYear = Integer.toString(yearNum); String tempMonth = Integer.toString(cal.get(Calendar.MONTH) + 1); String tempDay = Integer.toString(cal.get(Calendar.DAY_OF_MONTH)-1); return tempYear + "-" + tempMonth + "-" + tempDay; } //--------------获取天数---------------------------------------------------  public static Date getYearMonthFirstDay(int yearNum, int monthNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, monthNum - 1, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getNextYearMonthFirstDay(int yearNum, int monthNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, monthNum, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getYearMonthEndDay(int yearNum, int monthNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, monthNum, 0, 0, 0, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getYearMonthFirstDay(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(5, 1); cal.set(11, 0); cal.set(12, 0); cal.set(13, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getNextYearMonthFirstDay(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(2, 1); cal.set(5, 1); cal.set(11, 0); cal.set(12, 0); cal.set(13, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getYearMonthEndDay(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(5, cal.getActualMaximum(5)); cal.set(11, 0); cal.set(12, 0); cal.set(13, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getYearFirstDay(int yearNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, 0, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getNextYearFirstDay(int yearNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, 12, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); }  public static Date getYearEndDay(int yearNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, 12, 0, 0, 0, 0); cal.set(14, 0); return cal.getTime(); }  public static String getWeek(String strDate, int weekNum) { Calendar c = Calendar.getInstance(); c.setTime(parseDate(strDate)); if (weekNum == 1)  c.set(7, 2); else if (weekNum == 2)  c.set(7, 3); else if (weekNum == 3)  c.set(7, 4); else if (weekNum == 4)  c.set(7, 5); else if (weekNum == 5)  c.set(7, 6); else if (weekNum == 6)  c.set(7, 7); else if (weekNum == 0)  c.set(7, 1); return formatDate(c.getTime()); } public static Date getWeek(Date date, int weekNum) { Calendar c = Calendar.getInstance(); c.setTime(date); if (weekNum == 1)  c.set(7, 2); else if (weekNum == 2)  c.set(7, 3); else if (weekNum == 3)  c.set(7, 4); else if (weekNum == 4)  c.set(7, 5); else if (weekNum == 5)  c.set(7, 6); else if (weekNum == 6)  c.set(7, 7); else if (weekNum == 0)  c.set(7, 1); return c.getTime(); }  public static Date getNextMonday(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); do  c.add(Calendar.DAY_OF_MONTH, 1); while (c.get(Calendar.DAY_OF_WEEK) != 2); return c.getTime(); }  public static Date getPreviousDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, -1); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.MILLISECOND, 0); return getSqlDate(calendar.getTime()); }  public static Date getLastDayOfMonth(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month); calendar.set(Calendar.DATE, 1); return getPreviousDate(getSqlDate(calendar.getTime())); }  public static int getDaysInMonth(int year, int month) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month - 1);// Java月份才0开始算 return cal.getActualMaximum(Calendar.DATE); } //----------------根据用户生日计算年龄-------------------------------------------------  public static int getAgeByBirthday(Date birthday) { Calendar cal = Calendar.getInstance(); if (cal.before(birthday)) {  throw new IllegalArgumentException("The birthDay is before Now.It's unbelievable!"); } int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH) + 1; int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); cal.setTime(birthday); int yearBirth = cal.get(Calendar.YEAR); int monthBirth = cal.get(Calendar.MONTH) + 1; int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); int age = yearNow - yearBirth; if (monthNow <= monthBirth) {  if (monthNow == monthBirth) {  if (dayOfMonthNow < dayOfMonthBirth) {   age--;  }  } else {  age--;  } } return age; }  public static Date getSqlDate(java.util.Date date) { return new Date(date.getTime()); } public static void main(String[] args) { //dd System.out.println("编程测试结果:"); System.out.println("2017年 2月最后一天日期为:"+getLastDayOfMonth(2017, 2)); System.out.println("2017年第一天日期为:"+getYearFirstDay(2017)); System.out.println("2017年最后一天日期为:"+getYearEndDay(2017)); }}

运行结果:

Java日期操作方法工具类的示例分析

Java的优点是什么

1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。

关于“Java日期操作方法工具类的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Java日期操作方法工具类的示例分析

本文链接: https://www.lsjlt.com/news/221858.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java日期操作方法工具类的示例分析
    这篇文章将为大家详细讲解有关Java日期操作方法工具类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例讲述了Java日期操作方法工具类,具体如下:package com.gclo...
    99+
    2023-05-30
    java
  • Java中文件操作工具类fileUtil的示例分析
    小编给大家分享一下Java中文件操作工具类fileUtil的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:package com.gc...
    99+
    2023-05-30
    java
  • java日期相关类的示例分析
    这篇文章将为大家详细讲解有关java日期相关类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Date类类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒...
    99+
    2023-05-30
    java
  • Java工具类DateUtils的示例分析
    这篇文章主要介绍了Java工具类DateUtils的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下import java.text.ParseE...
    99+
    2023-05-30
    java dateutils
  • Java开发基础日期类的示例分析
    这篇文章主要为大家展示了“Java开发基础日期类的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java开发基础日期类的示例分析”这篇文章吧。一、日期工具类package co...
    99+
    2023-05-31
    java
  • Java基础之颜色工具类的示例分析
    这篇文章主要介绍Java基础之颜色工具类的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现了Web MVC设计...
    99+
    2023-06-14
  • jQuery中extend()与工具方法、实例方法的示例分析
    这篇文章主要介绍jQuery中extend()与工具方法、实例方法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:使用jQuery的时候会发现,jQuery中有的函...
    99+
    2022-10-19
  • Java中CountDownLatch异步转同步工具类的示例分析
    小编给大家分享一下Java中CountDownLatch异步转同步工具类的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用场景由于公司业务需求,需要对接socket、MQTT等消息队列。众所周知 socket 是...
    99+
    2023-06-20
  • Mysql数据迁徙方法工具的示例分析
    这篇文章给大家分享的是有关Mysql数据迁徙方法工具的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数据迁徙是每个后端都会遇到的工作之一,本文介绍了一些常见的数据迁徙方法...
    99+
    2022-10-18
  • Java操作pdf的工具类itext的处理方法
    目录一、什么是iText?二、引入jar三、iText常用类四、生成PDF步骤五、Java操作pdf的工具类itext六、更多的Java代码实例一、什么是iText? 在企业的信息系...
    99+
    2022-11-13
  • java编程中abstract类和方法的示例分析
    小编给大家分享一下java编程中abstract类和方法的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!抽象类和抽象方法常用知识点:(1)抽象类作为被继承类,子类必须实现抽象类中的所有抽象方法,除非子类也为抽象类。...
    99+
    2023-05-30
    java abstract
  • java并发编程工具类JUC之LinkedBlockingQueue链表队列的示例分析
    小编给大家分享一下java并发编程工具类JUC之LinkedBlockingQueue链表队列的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!java.u...
    99+
    2023-06-15
  • java并发JUC工具包AtomicInteger原子整型语法的示例分析
    这篇文章主要介绍了java并发JUC工具包AtomicInteger原子整型语法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。AtomicInteger 类底层存储...
    99+
    2023-06-29
  • Java文件的读写操作方法实例分析
    这篇“Java文件的读写操作方法实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java文件的读写操作方法实例分析”文...
    99+
    2023-06-30
  • Java面向对象之方法中内部类的示例分析
    这篇文章主要为大家展示了“Java面向对象之方法中内部类的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java面向对象之方法中内部类的示例分析”这篇文章吧。public cl...
    99+
    2023-06-02
  • Java NIO Path接口和Files类配合操作文件的示例分析
    这篇文章将为大家详细讲解有关Java NIO Path接口和Files类配合操作文件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Path接口Path表示的是一个目录名序列,其后还可以跟着一个文...
    99+
    2023-05-30
    java nio
  • Java多线程Atomic包操作原子变量与原子类的示例分析
    这篇文章主要介绍Java多线程Atomic包操作原子变量与原子类的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、何谓Atomic?Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的...
    99+
    2023-05-30
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作