pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

為什么 Java 日歷中的 1 月是 0 月?

Why is January month 0 in Java Calendar?(為什么 Java 日歷中的 1 月是 0 月?)
本文介紹了為什么 Java 日歷中的 1 月是 0 月?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

java.util.Calendar 中,一月被定義為第 0 個月,而不是第 1 個月.有什么具體原因嗎?

In java.util.Calendar, January is defined as month 0, not month 1. Is there any specific reason to that ?

我看到很多人對此感到困惑......

I have seen many people getting confused about that...

推薦答案

這只是 Java 日期/時間 API 的可怕混亂的一部分.列出它的問題需要很長時間(而且我確信我不知道一半的問題).誠然,處理日期和時間是很棘手的,但無論如何都是 aaargh.

It's just part of the horrendous mess which is the Java date/time API. Listing what's wrong with it would take a very long time (and I'm sure I don't know half of the problems). Admittedly working with dates and times is tricky, but aaargh anyway.

幫自己一個忙,使用 Joda Time 代替,或者可能使用 JSR-310.

Do yourself a favour and use Joda Time instead, or possibly JSR-310.

至于原因 - 正如其他答案中所述,這很可能是由于舊的 C API,或者只是從 0 開始的一般感覺......當然,除了那些日子從 1 開始.我懷疑原始實施團隊之外的任何人是否真的可以說明原因 - 但我再次敦促讀者不要太擔心為什么做出了錯誤的決定,而是要看看整個骯臟的范圍在 java.util.Calendar 中找到更好的東西.

As for the reasons why - as noted in other answers, it could well be due to old C APIs, or just a general feeling of starting everything from 0... except that days start with 1, of course. I doubt whether anyone outside the original implementation team could really state reasons - but again, I'd urge readers not to worry so much about why bad decisions were taken, as to look at the whole gamut of nastiness in java.util.Calendar and find something better.

贊成使用基于 0 的索引的一點是,它使名稱數組"之類的事情變得更容易:

One point which is in favour of using 0-based indexes is that it makes things like "arrays of names" easier:

// I "know" there are 12 months
String[] monthNames = new String[12]; // and populate...
String name = monthNames[calendar.get(Calendar.MONTH)];

當然,一旦你得到一個有 13 個月的日歷,這就會失敗......但至少指定的大小是你期望的月數.

Of course, this fails as soon as you get a calendar with 13 months... but at least the size specified is the number of months you expect.

這不是一個的理由,但這是一個的理由......

This isn't a good reason, but it's a reason...

作為評論,請求一些關于我認為日期/日歷有問題的想法:

As a comment sort of requests some ideas about what I think is wrong with Date/Calendar:

  • 令人驚訝的基數(1900 作為 Date 的年份基數,對于已棄用的構造函數來說是公認的;0 作為兩個月份的基數)
  • 可變性 - 使用不可變類型可以更加更輕松地處理真正有效的
  • 類型集不足:將 DateCalendar 作為不同的東西,這很好,但是缺少本地"與分區"值的分離,日期/時間與日期與時間也是如此
  • 一個 API 會導致帶有魔法常量的丑陋代碼,而不是明確命名的方法
  • 一個很難推理的 API - 所有關于何時重新計算事物等的業務
  • 使用無參數構造函數默認為現在",導致代碼難以測試
  • Date.toString() 實現總是使用系統本地時區(這讓很多 Stack Overflow 用戶感到困惑)
  • Surprising bases (1900 as the year base in Date, admittedly for deprecated constructors; 0 as the month base in both)
  • Mutability - using immutable types makes it much simpler to work with what are really effectively values
  • An insufficient set of types: it's nice to have Date and Calendar as different things, but the separation of "local" vs "zoned" values is missing, as is date/time vs date vs time
  • An API which leads to ugly code with magic constants, instead of clearly named methods
  • An API which is very hard to reason about - all the business about when things are recomputed etc
  • The use of parameterless constructors to default to "now", which leads to hard-to-test code
  • The Date.toString() implementation which always uses the system local time zone (that's confused many Stack Overflow users before now)

這篇關于為什么 Java 日歷中的 1 月是 0 月?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Parsing an ISO 8601 string local date-time as if in UTC(解析 ISO 8601 字符串本地日期時間,就像在 UTC 中一樣)
How to convert Gregorian string to Gregorian Calendar?(如何將公歷字符串轉換為公歷?)
Java: What/where are the maximum and minimum values of a GregorianCalendar?(Java:GregorianCalendar 的最大值和最小值是什么/在哪里?)
Calendar to Date conversion for dates before 15 Oct 1582. Gregorian to Julian calendar switch(1582 年 10 月 15 日之前日期的日歷到日期轉換.公歷到儒略歷切換)
java Calendar setFirstDayOfWeek not working(java日歷setFirstDayOfWeek不起作用)
Java: getting current Day of the Week value(Java:獲取當前星期幾的值)
主站蜘蛛池模板: 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 优考试_免费在线考试系统_培训考试系统_题库系统_组卷答题系统_匡优考试 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 北京浩云律师事务所-法律顾问_企业法务_律师顾问_公司顾问 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 威客电竞(vk·game)·电子竞技赛事官网 | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 云南成人高考_云南成考网| 中宏网-今日新闻-财经新闻| 谷梁科技| 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 制氮设备-变压吸附制氮设备-制氧设备-杭州聚贤气体设备制造有限公司 | 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 齿轮减速电机一体机_蜗轮蜗杆减速马达-德国BOSERL齿轮减速机带电机生产厂家 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | Duoguan 夺冠集团 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 |