JavaScript GetDate 无法跨区域工作
JavaScript GetDate not working across regions
我有一些JS代码,它接收客户端的日期/时间并将其传递给服务器,如下所示:
function SetPostbackValues() {
//Function that gets the client machine datetime and stores it in a hidden field
// so it may be used in code behind.
var date = new Date();
var day = date.getDate(); // yields day
if (day < 10)
day = '0' + day;
var month = date.getMonth() + 1; // yields month
if (month < 10)
month = '0' + month;
var year = date.getFullYear(); // yields year
var hour = date.getHours(); // yields hours
if (hour < 10)
hour = '0' + hour;
var minute = date.getMinutes(); // yields minutes
if (minute < 10)
minute = '0' + minute;
var second = date.getSeconds(); // yields seconds
if (second < 10)
second = '0' + second;
var time = day + "/" + month + "/" + year + " " + hour + ':' + minute + ':' + second;
var hiddenControl = '<%= hfDateTime.ClientID %>';
document.getElementById(hiddenControl).value = time;
}
我的问题是,当客户端时区设置为英国标准 dd/MM/yyyy 时,代码工作正常,但是当美国客户端连接时,转换为 DateTime 会抛出错误,指出它的格式不正确。
因为我分别获取每个月、日、年并将它们组合在一起,所以我不明白为什么它不适用于不同的区域设置。
尝试将日期时间插入 SQL 时发生此错误:
using (SqlCommand cmd = new SqlCommand("Remove", con))
{
string test = (this.Master.FindControl("hfDateTime") as HiddenField).Value;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@RemovalDate", SqlDbType.DateTime).Value = (this.Master.FindControl("hfDateTime") as HiddenField).Value; //Get the client's datetime.
con.Open();
insertedRecordID = (int)cmd.ExecuteScalar();
}
错误为 {"无法将参数值从字符串转换为日期时间。
测试的值是:"19/02/2016 10:55:45",这对我来说没有错。
我认为你应该使用这个:
function SetPostbackValues() {
var date = new Date();
var hiddenControl = '<%= hfDateTime.ClientID %>';
document.getElementById(hiddenControl).value = date.toISOString();
}
并将代码隐藏更改为
cmd.Parameters.Add("@RemovalDate", SqlDbType.DateTime).Value = DateTime.Parse((this.Master.FindControl("hfDateTime") as HiddenField).Value);
使用(new Date()).getTime()
避免使用不同的日期时间格式可能更容易。请注意,C# DateTime
的构造函数基础和规模与 Javascript 不同。
根据您需要 UTC 还是本地时间,减去 datevalue.getTimezoneOffset() * 60000
。
相关文章:
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- IE8更改文本区域上的事件侦听器不工作
- 如何构建'瞬间'在非全局区域设置中工作的函数
- Alloy UI文本区域工作不正常
- 谷歌地图有限的区域不工作
- 如何使日期区域设置正常工作
- 与未在发布模式下工作的子目录和区域绑定
- 预览文本区域分区不工作
- 文本区域最大长度属性无法在所有浏览器中正常工作
- JavaScript GetDate 无法跨区域工作
- 使用 ajax 将文本区域信息存储到数据库中.除非我以任何方式编辑文本区域,否则工作正常.信息仍然被存储,但XMLHTT
- 文本区域中输入键上的 AJAX 请求未按预期工作
- JavaScript 不会在内容区域 wordpress 之外工作
- 正在获取<text区域>jQuery的值未按预期工作
- 两个可滴管的区域第一个只能工作
- 修改后的Joomla模板现在没有主要区域链接在Chrome中工作,但在IE中工作正常
- 如何使此区域映射/复选框与JQuery双向工作?(包括JsFiddle)
- iOS文本区域在滚动后停止工作
- 将文本从对象追加到文本区域不工作
- 文本区域命名难题-与PHP和javascript一起工作