以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]移动开发 为何不返回日期时间型的时间部分-已j解决  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104468)

--  作者:shenyl0211
--  发布时间:2017/7/29 19:47:00
--  [求助]移动开发 为何不返回日期时间型的时间部分-已j解决
      用电脑审批时,日期时间型的字段填写的时间是正常的,但手机或电脑通过浏览器审批时,时间部分显示为00:00
于是用下列代码测试,发现1~4的情况能返回日期和空白的时间,5~6的情况是错误的。刚才升级为7月28日版问题依旧。
      请问:对于1~4的情况,是我电脑的windows系统有问题吗?对于5~6的情况,代码应该怎么改?
      谢谢!

      问题在于服务端的列属性没有改为datetime。
dr("发送时间")=format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm")

    Case "test.htm"
        If e.PostValues.Count=0 Then
            wb.AddForm("","form1","test.htm")
            With wb.AddInputGroup("form1","ipg1","日期输入")
                .AddInput("日期时间","日期时间","datetime-local").Value=Format(Date.now,"yyyy-MM-ddTHH:mm")
            End With
            With wb.AddButtonGroup("form1","btg1",True)
                .Add("btn1", "确定", "submit")
            End With
        Else
            dr=DataTables("待批任务").AddNew
        1  dr("发送时间")=Date.now \'结果2017-07-29 00:00
        2  dr("发送时间")=format(Date.now,"yyyy-MM-ddTHH:mm") \'结果:2017-07-29 00:00
        3  dr("发送时间")=format(Date.now,"yyyy-MM-dd HH:mm") \'结果:2017-07-29 00:00
        4  dr("发送时间")=e.PostValues("日期时间") \'结果:2017-07-29 00:00 -因为“日期时间”中含T: e.PostValues("日期时间")=2017-07-29T12:34
        5  dr("发送时间")=format(e.PostValues("日期时间"),"yyyy-MM-ddTHH:mm") \'结果:从字符串"yyyy-MM-ddTHH:mm"到类型"Date"的转换无效.-因为“日期时间”中含T
        6  dr("发送时间")=format(e.PostValues("日期时间"),"yyyy-MM-dd HH:mm") \'结果:从字符串"yyyy-MM-dd HH:mm"到类型"Date"的转换无效.-因为“日期时间”中含T
            dr.Save
        End If
[此贴子已经被作者于2017/7/30 17:11:06编辑过]

--  作者:有点甜
--  发布时间:2017/7/30 10:20:00
--  

 

dr("发送时间")=format(cDate(e.PostValues("日期时间").Replace("T", "")),"yyyy-MM-dd HH:mm")

 

 


--  作者:shenyl0211
--  发布时间:2017/7/30 11:09:00
--  
谢谢甜版,5~6情况的问题解决了,不过少个空格:
dr("发送时间")=format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm")
但是,时间部分还是没有传递,确认foxtable没问题吗?是windows系统的问题吗?


--  作者:有点甜
--  发布时间:2017/7/30 11:23:00
--  

你电脑问题吧?afterOpenProject写代码

 

Dim cd As System.Globalization.DateTimeFormatInfo = System.Globalization.DateTimeFormatInfo.CurrentInfo
cd.ShortDatePattern = "yyyy年MM月dd日"
Dim DateInfo As System.Reflection.FieldInfo = cd.Gettype.GetField("generalLongTimePattern", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance)
If  DateInfo IsNot Nothing Then
    DateInfo.SetValue(cd, "yyyy-MM-dd HH:mm:ss")
End If


--  作者:shenyl0211
--  发布时间:2017/7/30 11:40:00
--  

截图
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170730113824.png
图片点击可在新窗口打开查看
第1-2行是服务器的日期,

第3行是我本机的日期,对第2行克隆后产生的,

第4行是代码测试的

证明本机和服务器的时间格式没问题。

本机的BeforeOpenProject代码

\'修改系统日期格式
Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\International","sShortDate","yyyy-MM-dd")
Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\International","sLongDate","yyyy-MM-dd")
Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\International","sShortTime","HH:mm")
Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\International","sTimeFormat","HH:mm:ss")

[此贴子已经被作者于2017/7/30 11:45:34编辑过]

--  作者:有点甜
--  发布时间:2017/7/30 11:44:00
--  

1、直接msgbox(Date.now) 提示什么?

 

2、你发送时间列有问题吧?是长日期类型吗?


--  作者:shenyl0211
--  发布时间:2017/7/30 11:49:00
--  

看5楼。

msgbox(Date.now) 、format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm") 都是正确的

双击空格输入的日期和时间也是正确的

[此贴子已经被作者于2017/7/30 11:52:48编辑过]

--  作者:shenyl0211
--  发布时间:2017/7/30 12:05:00
--  
只要确认foxtable没问题就行
--  作者:有点甜
--  发布时间:2017/7/30 12:11:00
--  
以下是引用shenyl0211在2017/7/30 11:49:00的发言:

看5楼。

msgbox(Date.now) 、format(cDate(e.PostValues("日期时间").Replace("T", " ")),"yyyy-MM-dd HH:mm") 都是正确的

双击空格输入的日期和时间也是正确的

[此贴子已经被作者于2017/7/30 11:52:48编辑过]

 

时间部分没有传递?事件永远是00:00这个意思?我测试没问题。


--  作者:shenyl0211
--  发布时间:2017/7/30 12:20:00
--  

那我就重装系统试试。


解决了。与系统无关。问题在于服务端的列属性没有改为datetime。

[此贴子已经被作者于2017/7/30 17:12:01编辑过]