2019年12月2日--2019年8日(共21小时,剩9979小时)

本博客记录了一周内深入学习游戏引擎、图形编程和相关技术的过程,包括WebGL、HLSL、3D图形数学、Cesium源码分析等,分享了个人的学习计划与心得。

2019年12月2日,焦虑了,算一小时。

2019年12月3日,

计划:

1,webgl 编程指南(FBO)(10:05---17:15,有效时间2小时)

2,鬼火引擎,matrix.h

3,windows核心编程:6.3(0.5小时)

4,3d图形数学一节

5,cesium FBO

6,HLSL精讲,纹理动画(改为cesium纹理动画,0.5小时)

7,GLSL视频教程1个(已完成)

8,GIS视频教程1个(已完成)

9,下载器视频教程1个(已完成)

10,网络视频教程1个(已完成)

11,UE4视频教程1个(已完成)

12,UE4一文档

13,制定第二天计划

晚上视频教程就行了,7-11算2小时吧。共5小时,

目前是1+5=6小时,剩9994小时

2019年12月4日,

计划:

1,webgl 编程指南(shadowmap)(已完成,本书结束,继之以hlsl精讲)(有效时间2小时)

2,鬼火引擎,matrix.h,IFilelist.h,IReadFile.h,IFileSystem.h,CFilelist,CReadFile(已完成)

3,windows核心编程:6.4.1(已完成)

4,3d图形数学一节

5,cesium gltf

6,HLSL精讲,纹理动画

7,GLSL视频教程1个

8,GIS视频教程1个

9,下载器视频教程1个

10,网络视频教程1个

11,UE4视频教程1个,(22讲)

12,UE4一文档

13,制定第二天计划

 

由于白天一直搞webgl,且磨蹭,加上晚上,有效时间算5小时,共11小时,剩9989小时

 

2019年12月5日

计划:

1,鬼火引擎,CZipReader(已完成)

2,windows核心编程:6.4.2(已完成)

3,3d图形数学:第一章即相应代码(已完成)

4,cesium 源码分析1个(已完成)

5,HLSL精讲,5.5半球光照(已完成)

6,GLSL视频教程1个(已完成)

7,GIS视频教程1个(已完成)8,下载器视频教程1个(已完成)

10,UE4视频教程1个,(22讲)

11,UE4一文档(已完成)

12,制定第二天计划

 

执行:

5,HLSL精讲,5.5半球光照  (9:30--10:26)

3,3d图形数学:第一章即相应代码 (10:40-11:00)

2,windows核心编程:6.4.2(11:05-11:08)

1,鬼火引擎,CZipReader(11:08--14:01,吃饭午休1.5小时)

4,cesium 源码分析1个(16:00-18:00)

7,GIS视频教程1个   8,下载器视频教程1个(19:08--19:35)

6,GLSL视频教程1个

9,网络视频教程1个

(20:10--20;44,)

11,UE4一文档(21:00-21:20)

共计5小时,时间分配比较合理,就是上午学习,下午工作,晚上视频教程的模式。

有效时间合计11+5=16小时,剩余9984小时

 

2019年12月6日

计划:

1,鬼火引擎,os(已完成)

2,windows核心编程:6.4.3(已完成)

3,3d图形数学:2.1及相应代码(已完成)

4,cesium 源码分析1个

5,HLSL精讲,5.5.2光照贴图(已完成)

6,GLSL视频教程1个(移至周末进行)

7,GIS视频教程1个(移至周末进行)

8,下载器视频教程1个(移至周末进行)

10,UE4视频教程1个,(移至周末进行)

11,UE4一文档(已完成)

12,制定下周计划

 

执行:

5,HLSL精讲,5.5.2光照贴图(9:35--10:00)

3,3d图形数学:2.1及相应代码(10:13-10:30)

2,windows核心编程:6.4.3

1,鬼火引擎,os

(10:41-11:15)

11,UE4一文档 (11:22--11:25)

DX10龙书(可以考虑引入高版本api,)

4,cesium 源码分析1个(1小时)

当天共5小时

 

有效时间21小时,剩9979小时

 

总结:上午学习,下午工作,晚上视频教程的方法最有效,

由于cesium加入了drawcommand,以及Pbr,所以基于物理的引擎和vulkan可以引入学习内容

<think> 我们被要求将“20193月”这样的字符串转换为“2019-03”格式。注意,这里的输入字符串中月份可能是单数字(如“3月”),我们需要将其转换为双数字格式(如“03”)。 根据引用中提供的示例,我们使用SimpleDateFormat类来进行期格式的转换。但是,我们需要注意: 1. 输入字符串的格式是“yyyyM月”(因为月份可能是1位或2位) 2. 输出字符串的格式是“yyyy-MM” 步骤: a. 创建一个SimpleDateFormat对象,用于解析输入字符串,其格式应该为"yyyyM月"。 b. 将字符串解析为Date对象。 c. 创建另一个SimpleDateFormat对象,用于格式化输出,其格式为"yyyy-MM"。 d. 使用第二个SimpleDateFormat将Date对象格式化为字符串。 但是注意:我们的输入字符串只有和月,没有。而Date对象包含期(、时、分、秒等),所以我们需要确保在转换过程中不会因为缺少而出现问题。 通常,在解析时,如果没有指定,那么默认会是当月的第一天。但是我们只关心月,所以这没关系,因为我们最后只输出月。 然而,我们也可以考虑使用YearMonth类(Java 8及以上)来更精确地处理,但考虑到引用中都是使用SimpleDateFormat,并且问题要求可能基于Java SE基础,所以我们使用SimpleDateFormat。 但是注意:SimpleDateFormat在解析时,如果字符串不包含,那么解析出来的Date对象会是当月的第一天(00:00:00 CST),但这不影响我们只取月。 另一种方法是直接进行字符串处理,但为了符合期转换的规范,避免手动处理(比如月份中“三月”和“三月”都是3,但字符串处理需要判断),我们使用期转换。 根据引用[1][2][3]中的方法,我们可以这样写: 示例代码: 输入:"20193月" 输出:"2019-03" 步骤: 1. 定义输入格式:new SimpleDateFormat("yyyyM月") // 注意:这里用M,可以匹配1位或2位的月份 2. 解析字符串得到Date对象 3. 定义输出格式:new SimpleDateFormat("yyyy-MM") 4. 使用输出格式将Date对象格式化为字符串 注意:SimpleDateFormat的parse方法可能会抛出ParseException,需要处理异常。 但是,我们也可以考虑另一种情况:输入字符串可能是“201903月”(月份有两位),我们的输入格式同样可以解析。 因此,我们可以编写如下代码: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateFormatConverter { public static void main(String[] args) throws ParseException { String input = "20193月"; // 创建输入格式的SimpleDateFormat对象,格式为"yyyyM月" SimpleDateFormat inputFormat = new SimpleDateFormat("yyyyM月"); // 将字符串解析为Date Date date = inputFormat.parse(input); // 创建输出格式的SimpleDateFormat对象,格式为"yyyy-MM" SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM"); String output = outputFormat.format(date); System.out.println(output); // 输出:2019-03 } } ``` 但是,这里有一个潜在的问题:当输入的月份是两位时,比如“201912月”,解析没有问题,输出也会是“2019-12”。 然而,我们也可以不通过Date对象,直接使用字符串处理,例如: - 使用正则表达式提取份和月份 - 然后将月份转换为两位数字(如果是一位前面补0) 但是,题目要求参考了引用中使用的SimpleDateFormat类,所以建议使用期格式转换。 不过,如果输入格式不标准,使用SimpleDateFormat可能会报错,所以我们需要确保输入字符串是“20193月”这样的格式。 另外,如果我们使用Java 8或更高版本,推荐使用java.time包中的YearMonth类,这样更安全,因为SimpleDateFormat不是线程安全的。 但是,根据引用,用户使用的是Java SE基础,可能没有Java 8,所以我们使用SimpleDateFormat。 因此,我们提供使用SimpleDateFormat的解决方案。 如果用户要求更高效或更安全(多线程环境下),可以考虑使用ThreadLocal包装SimpleDateFormat,或者使用其他方法。但这里只是简单转换。 因此,我们给出上述代码。 另外,引用[4]中提到Oracle的期格式化问题,但这里我们是在Java中处理,所以不需要考虑。 所以,总结方法:使用SimpleDateFormat先解析再格式化。 注意:如果输入字符串的格式不是严格的“+月”(比如中间有空格等),则需要调整格式,或者先预处理字符串。 如果用户有额外的需求,比如处理多种格式,则需要更复杂的解析。但根据问题,我们只处理“20193月”这种格式。 因此,我们推荐使用上述代码。 相关问题: 1. 如何将“201903月”转换为“2019-03”? 2. 如何将期字符串从“yyyyM月”格式转换为“yyyy-MM”格式? 3. SimpleDateFormat在解析期字符串时需要注意什么问题? 4. 在Java中,如何将月份的数字格式化为两位? 5. 除了SimpleDateFormat,还有哪些Java类可以用于期格式转换? </think>要将期格式“20193月”转换为“2019-03”,可以通过以下步骤实现: ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateConverter { public static void main(String[] args) throws ParseException { // 原始期字符串(带中文) String originalDate = "20193月"; // 步骤1:创建解析格式(匹配"yyyyM月") SimpleDateFormat inputFormat = new SimpleDateFormat("yyyyM月"); // 步骤2:将字符串解析为Date对象 Date date = inputFormat.parse(originalDate); // 步骤3:创建输出格式("yyyy-MM") SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM"); // 步骤4:格式化输出 String result = outputFormat.format(date); System.out.println(result); // 输出:2019-03 } } ``` ### 关键点说明: 1. **输入格式**:`"yyyyM月"`中的`M`能自动处理单/双位月份(如`3`→`03`,`12`→`12`) 2. **解析过程**:`inputFormat.parse()`将带中文的字符串转为Date对象 3. **输出格式**:`"yyyy-MM"`确保份和月份用连字符分隔,月份补零 4. **异常处理**:需声明`throws ParseException`或使用try-catch块 ### 示例结果: | 输入 | 输出 | |---------------|-----------| | `"20193月"` | `2019-03` | | `"202512月"`| `2025-12` | > 此方案通过`SimpleDateFormat`实现格式转换,确保月份自动补零且兼容不同位数的月份输入[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值