找回密码
 立即注册

QQ登录

只需一步,快速开始

zheyuan

注册会员

5

主题

10

帖子

41

积分

注册会员

积分
41
最新发帖
zheyuan
注册会员   /  发表于:2024-7-11 09:32  /   查看:619  /  回复:7
spreadjsv16.0.6月份选择器,例如选中2024年7月后,现在展示格式为2024/7/1,能否展示2024/7

7 个回复

倒序浏览
eat_grape_5
高级会员   /  发表于:2024-7-11 10:13:24
沙发
设置单元格格式,自定义格式“yyyy/mm"便可将选择的日期格式由”2024/7/1“切换为”2024/7“。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-11 11:38:07
板凳
楼上正解
回复 使用道具 举报
zheyuan
注册会员   /  发表于:2024-7-12 11:45:33
地板
补充问题:选择了月份,getDataSource的时候我想直接获取到yyyymm的数据格式有什么好方法
回复 使用道具 举报
eat_grape_5
高级会员   /  发表于:2024-7-12 12:22:12
5#
本帖最后由 eat_grape_5 于 2024-7-12 12:25 编辑
zheyuan 发表于 2024-7-12 11:45
补充问题:选择了月份,getDataSource的时候我想直接获取到yyyymm的数据格式有什么好方法

可通过Worksheet:getText()方法可以获取,可参考API文档:https://demo.grapecity.com.cn/sp ... s.Worksheet#gettext
获取结果与设置的单元格格式一致,如下图所示:

1720758248693.png811595458.png

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-12 18:54:06
6#
zheyuan 发表于 2024-7-12 11:45
补充问题:选择了月份,getDataSource的时候我想直接获取到yyyymm的数据格式有什么好方法

现在的getDataSource获取的内容是什么呢?是OADate吗?如果是OADate可以通过下列方式进行转换

dateTransform.html

2.39 KB, 下载次数: 94

回复 使用道具 举报
zheyuan
注册会员   /  发表于:2024-7-15 10:07:40
7#
本帖最后由 zheyuan 于 2024-7-15 10:09 编辑
Clark.Pan 发表于 2024-7-12 18:54
现在的getDataSource获取的内容是什么呢?是OADate吗?如果是OADate可以通过下列方式进行转换

感谢回复,我使用了您提供的demo,尝试还原我的需求场景。例如:我获取到月份是202407,想让他在spreadjs月份选择中正常展示。我把formatter和传入数据均改为了yyyymm格式,但展示出来的结果是yyyymmdd

dateTransform.zip

1.07 KB, 下载次数: 144

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-15 14:49:39
8#
本帖最后由 Clark.Pan 于 2024-7-15 16:05 编辑

您debug一下就可以发现原因了,原因跟SpreadJS应该没有关系
如下图所示,当设置值的时候会走else逻辑
image.png625668334.png
如上图所示,我在逻辑里面希望利用JS的new Date对日期做转换处理,但是JS的new Date看样子不支持202307这样的日期字符串。解析的有问题,如下图所示:
image.png720625915.png
源生的new Date解析成了202307年的1月1日。
导致内部我们自身formatter的格式化时,按照yyyymm格式化的结果就是20230701。
所以要支持您目前的情况,需要您改一下else这块的逻辑。该用其他的转换方式,转换成日期。
例如可以先将202307用正则匹配成2023-07,然后再new Date("2023-07")。只要最终生成正确的Date对象,就可以实现您需要的效果。
image.png609988097.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部